【发布时间】:2014-05-06 14:03:28
【问题描述】:
最近看到这样的代码——
class Test{
public static void main(String[] args){
String s1 = "String1"; //1
String s2 = new String("String2"); //2
System.out.println(s1.equals("String1"));
System.out.println(s1=="String1"); //3
System.out.println(s2.equals("String2"));
System.out.println(s2=="String2"); //4
}
}
输出是 -
true
true
true
false
到目前为止,我知道,在第 1 点“String1”被放置在字符串池中并分配有字符串类型引用变量 s1。没有创建任何String对象吗?
我们知道在第 2 点创建了一个新的 String 对象,在第 4 点,表达式 (s2=="String2") 的计算结果为 false。如果在第 1 点创建了一个新的 String 对象,那么第 3 点的表达式 (s1=="String1") 如何评估为真。如果在第 1 点没有创建新对象,那么第 3 点 (s1=="String1") 的表达式如何计算为 true?
提前致谢
【问题讨论】:
-
浏览副本。如果您还有其他问题,请务必指出确切的困惑所在。
标签: java string string-comparison