我们通常使用new关键字创建对象,例如:
new
Object obj = new Object();
字符串是对象,但是我们不能new用来创建它们:
String str = "Hello World";
为什么是这样?我可以用做一个琴弦new吗?
除了已经说过的内容外,Java中的字符串文字(即像Java 一样"abcd"但不喜欢的字符串)new String("abcd")是经过内插的-这意味着,每次引用“ abcd”时,你都将引用一个String实例,而不是一个新实例。每一次。因此,你将拥有:
"abcd"
new String("abcd")
“ abcd”
String a = "abcd"; String b = "abcd"; a == b; //True
但是如果你有
String a = new String("abcd"); String b = new String("abcd");
那么就有可能
a == b; // False
(如果有人需要提醒,请务必使用.equals()比较字符串;==测试物理相等性)。
.equals()
==
Interning String文字很好,因为它们经常被使用多次。例如,考虑(人为)代码:
for (int i = 0; i < 10; i++) { System.out.println("Next iteration"); }
如果没有String的内部,则“下一次迭代”将需要实例化10次,而现在只需要实例化一次。