字符串是Java中的对象,那么为什么不使用'new'创建它们呢?

我们通常使用new关键字创建对象,例如:

Object obj = new Object();

字符串是对象,但是我们不能new用来创建它们:

String str = "Hello World";

为什么是这样?我可以用做一个琴弦new吗?

回答:

除了已经说过的内容外,Java中的字符串文字(即像Java 一样"abcd"但不喜欢的字符串)new String("abcd")是经过内插的-这意味着,每次引用“ abcd”时,你都将引用一个String实例,而不是一个新实例。每一次。因此,你将拥有:

String a = "abcd";

String b = "abcd";

a == b; //True

但是如果你有

String a = new String("abcd");

String b = new String("abcd");

那么就有可能

a == b; // False

(如果有人需要提醒,请务必使用.equals()比较字符串;==测试物理相等性)。

Interning String文字很好,因为它们经常被使用多次。例如,考虑(人为)代码:

for (int i = 0; i < 10; i++) {

System.out.println("Next iteration");

}

如果没有String的内部,则“下一次迭代”将需要实例化10次,而现在只需要实例化一次。

以上是 字符串是Java中的对象,那么为什么不使用&#39;new&#39;创建它们呢? 的全部内容, 来源链接: utcz.com/qa/430540.html

回到顶部