Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该在什么时候使用String s=new String(“Hello World”)?_Java_String - Fatal编程技术网

Java 我应该在什么时候使用String s=new String(“Hello World”)?

Java 我应该在什么时候使用String s=new String(“Hello World”)?,java,string,Java,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”?这是我遇到的一个面试问题 如果在大多数情况下都应该避免使用st

可能重复:

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

解释为什么应该避免使用
String s=new String(“Hello World”)
的相关问题如下:

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

如果在大多数情况下都应该避免使用
strings=newstring(“helloworld”)
,为什么Java仍然允许这样做?

1)strings=“text”; 此语法将为堆中的“文本”分配内存。每次当您将这个“文本”分配给其他变量时,它每次都会返回相同的内存引用。 对于Exp-

   String aa = "text";
   String bb = "text";

   if(aa == bb){
       System.out.println("yes");
   } else {
       System.out.println("No");
   }
将打印-是

但是
字符串s=新字符串(“文本”); 始终在内存中创建一个新位置,并每次返回一个新引用。 用于Exp-

   String aa = new String ("text");
   String bb = new String ("text");

   if(aa == bb){
       System.out.println("yes");
   } else {
       System.out.println("No");
   }

will print-No

当您可以执行
Boolean.true
时,同样的问题适用于
new Boolean(true)
<代码>整数a=5+1-1是愚蠢的,但却是合法的。@Damien_不信者:这个特定的例子是由编译器处理的(而
new String(“s”);
)不是。@Thilo-这可能是支持这种构造的一个论点(与希望Java完全禁止合法表达式的OPs立场相反)。对不起,你能举一个具体的例子说明我什么时候应该使用新字符串吗?我知道它背后的理论,只是缺少例子