可能重复:
What is the purpose of the expression “new String(…)” in Java?
我知道{@ 1}}应该避免,因为它会为“Hello World”创造额外的空间,这在大多数情况下是不必要的。
解释为什么String s = new String("Hello World")
应该避免的相关问题在这里:
What is the difference between "text" and new String("text")?
但我们什么时候需要使用String s = new String("Hello World")
而不是String s = new String("Hello World")
?这是我遇到的面试问题。
如果在大多数情况下应该避免String s = "Hello World"
,为什么Java仍允许这样做?
答案 0 :(得分:1)
1)String s =“text”; 此语法将为堆中的“text”分配内存。并且每次将此“文本”分配给其他变量时,每次都会返回相同的内存引用。 对于Exp -
String aa = "text";
String bb = "text";
if(aa == bb){
System.out.println("yes");
} else {
System.out.println("No");
}
将打印 - 是
但
String s = new String(“text”);
始终在内存中创建新位置并每次返回新引用。
对于Exp -
String aa = new String ("text");
String bb = new String ("text");
if(aa == bb){
System.out.println("yes");
} else {
System.out.println("No");
}
将打印 - 否