在下面的代码中,在池中创建一个字符串,然后它是concat,创建另外的字符串对象。决赛是" 2cfalse"并由a引用。然后在第7行,因为Strings'非重复性,我认为它不会创建单独的文字作为" 2cfalse"所以==运算符必须返回true ..为什么它不返回true ..
class demo {
public static void main(String aaa[]) {
String a = "";
a += 2;
a += 'c';
a += false;
if (a == "2cfalse")
System.out.println(1);
if (a.equals("2cfalse"))
System.out.println(2);
}
}
答案 0 :(得分:1)
这是因为==
将String
与的内存位置与String.equals
进行比较,后者将按字典顺序进行比较。