可能重复:
字符串对象和字符串文字之间的差异
初始化String对象时,至少有两种方法,例如:
String s = "some string";
String s = new String("some string");
Run Code Online (Sandbox Code Playgroud)
有什么不同?
Java语言对字符串有特殊处理; 字符串文字自动成为一个String对象.
因此,在第一种情况下,您正在初始化s对该String对象的引用.
在第二种情况下,您将创建一个新String对象,将对原始String对象的引用作为构造函数参数传递.换句话说,您正在创建副本.s然后初始化该引用以引用该副本.
在第一种情况下,如果存在,则可以从池中获取此字符串.在第二种情况下,您显式创建新的字符串对象
您可以通过以下行检查:
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)
| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |