繁体   English   中英

为什么使用char []而不是String?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM