2014-09-26 91 views
0

这是一个概念性问题。我知道字符串是不变的;它们的值在创建后无法更改。考虑这个宣言 -静态字符串vs Java中的字符串

private final static String ABC = "abc"; 

VS

private final String ABC = "abc"; 

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

如果ABC的价值没有在课堂上直接更新,是否有任何理由需要第二个?

在此先感谢。

+6

你是否理解'static'和non-'static'之间的区别? – 2014-09-26 21:13:11

+0

字符串_immutable_,但不一定_constant_。 – iamnotmaynard 2014-09-26 21:15:22

+0

@oliver Charlesworth - 是的,我了解静态和非静态之间的区别。这个问题是针对STRINGS的。感谢所有将问题标记为重复的人,但提供的重复链接无法回答我的问题。 – ND27 2014-09-26 21:48:19

回答

1

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

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

1

第一个为您的类的所有实例创建一个副本,但第二个为每个实例创建ABC。

第一个可以被调用没有对象本身。