Java中的静态字符串与字符串

时间:2014-09-26 21:11:37

标签: java string

这是一个概念性问题。我知道字符串是不变的;它们的值在创建后无法更改。考虑一下这个声明 -

private final static String ABC = "abc"; 

vs

private final String ABC = "abc"; 

为什么第一个在性能方面更好?

如果ABC的值没有在课堂上直接更新,为什么需要第二个呢?

提前致谢。

2 个答案:

答案 0 :(得分:1)

第一个是〜更好〜因为你在所有实例中都没有额外的String引用。因为它们都是常量表达式,所以在类字节代码(使用它们的值)中会得到相同的行为。

如果在任何地方使用反射,还有一些差异需要考虑。

答案 1 :(得分:1)

第一个只为你的班级的所有实例创建一个副本。但是第二个为每个实例创建ABC。

可以在没有对象本身的情况下调用第一个。