我不明白这段代码的ouptut。比较具有相同值的两个字符串(未使用new
关键字分配)时,java返回true。但是当我使用new
关键字并在构造函数中传递值时,它会输出false。
但是当我使用new
关键字而不是将值传递给构造函数时,我会在下一步中分配它。这次它返回true。为什么呢?
class CheckStrings{
String s;
}
public class EQCheckTest {
public static void main(String[] args) {
String a1 = "pune";
String a2 = "pune";
String a3 = new String("pune");
String a4 = new String();
a4 = "pune";
CheckStrings cs = new CheckStrings();
cs.s = "pune";
System.out.println(a1==a2);
System.out.println(a1==cs.s);
System.out.println(a1==a3);
System.out.println(a1==a4);
}
}
输出:
true
true
false
true
为什么a1 == a3 false和a1 == a4是真的?