可能重复:
Equals 和 == 的区别
在 JDK 1.6 中,String equals 操作可以用 == 代替吗?
如何比较 Java 中的字符串?
在玩 Java-Strings 时,我没想到会出现以下结果:
public class Sandbox {
public static void main(String[] args) {
String a = "hello";
String b = "hello";
System.out.println(a == b); //true Why?, a and b both are seperate Objects
System.out.println(a == "hello"); //true Why?
System.out.println(a == new String(b)); //false As expected
}
}
我希望一切都是错误的,因为“==”比较引用。为什么会有这个结果?
当我改变String b = "world"
时,System.out.println(a == b);
返回 false
。似乎正在比较 String-Object 的内容。
由于 Java 7 可以比较 switch-case-Statements 中的字符串,我认为它可能与 Java 版本有关。但正如这里所描述的,当比较 Switch-Case 中的字符串时会调用 equals-Methode。