String s ="something"之间有什么区别; 和String s = new String("something");

Cai*_*der 4 java

可能重复:
字符串对象和字符串文字之间的差异

初始化String对象时,至少有两种方法,例如:

String s = "some string";
String s = new String("some string");
Run Code Online (Sandbox Code Playgroud)

有什么不同?

Oli*_*rth 8

Java语言对字符串有特殊处理; 字符串文字自动成为一个String对象.

因此,在第一种情况下,您正在初始化s对该String对象的引用.

在第二种情况下,您将创建一个新String对象,将对原始String对象的引用作为构造函数参数传递.换句话说,您正在创建副本.s然后初始化该引用以引用该副本.


mis*_*off 7

在第一种情况下,如果存在,则可以从池中获取此字符串.在第二种情况下,您显式创建新的字符串对象

您可以通过以下行检查:

String s1 = "blahblah";
String s2 = "blahblah";
String s3 = new String("blahblah");
String s4 = s3.intern();
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s2 == s3);
System.out.println(s1 == s4);

Output:
true
false
false
true
Run Code Online (Sandbox Code Playgroud)