![](/img/trans.png)
[英]Why PasswordField use String instead of char[] in Vaadin?
[英]Why use char[] instead of String?
在第146行的Thread.java中 ,我注意到作者使用了char[]
而不是String
字段。 有没有我不知道的性能原因? getName()
还在返回名称之前将字符包装在String中。 使用String
不是更好吗?
一般来说,是的。 我怀疑char[]
是出于性能原因而在Thread
中使用,早在Java中的这些东西需要尽一切努力才能获得不错的性能时。 随着现代JVM的出现,这种微优化早已变得不重要,但它只是一直保持这种状态。
在旧的Java 1.0时代源代码中有很多奇怪的代码,我不会过分关注它。
很难说。 也许他们考虑了一些优化,也许编写这段代码的人只是更习惯于字符串的C风格char*
数组,或者可能在编写代码时他们不确定字符串是否是不可变的。 但是使用这段代码, Thread.getName()
调用Thread.getName()
,都会创建一个新的char数组,因此这个代码实际上比使用字符串更重。
也许原因是安全保护? 可以使用反射更改字符串,因此作者希望在读取和写入时进行复制。 如果你这样做,你也可以使用char数组来加快复制速度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.