4

可能重复:
Java 中表达式“new String(...)”的目的是什么?

我知道String s = new String("Hello World")应该避免这种情况,因为它会为“Hello World”创造额外的空间,这在大多数情况下是不必要的。

解释为什么String s = new String("Hello World")应该避免的相关问题在这里:

“文本”和新字符串(“文本”)有什么区别?

但是我们什么时候需要使用String s = new String("Hello World"), 而不是String s = "Hello World"?这是我遇到的一个面试问题。

如果String s = new String("Hello World")在大多数情况下应该避免,为什么 Java 仍然允许这样做?

4

1 回答 1

1

1) 字符串 s = "文本"; 此语法将为堆中的“文本”分配内存。并且每次您将此“文本”分配给其他变量时,它将每次返回相同的内存引用。对于 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");
   }

将打印 - 否

于 2012-05-31T08:20:02.140 回答