JAVA-为什么a==“1”返回false

JAVA-为什么a==“1”返回false,java,Java,可能重复: 有人能解释一下下面的java代码吗 String a = "1"; if(a == "1") { //print compare 1 is true; } else { //print compare 1 is false; } if(a.equals("1")) { //print compare 2 is true; } else { //print compare 2 is false; } 结果是 compare 1 is false compare 2 is tr

可能重复:

有人能解释一下下面的java代码吗

String a = "1";
if(a == "1") {
//print compare 1 is true;
} else { 
//print compare 1 is false;
}

if(a.equals("1")) {
//print compare 2 is true;
} else { 
//print compare 2 is false;
}
结果是

compare 1 is false
compare 2 is true
我唯一的解释是,它比较的是内存地址,而不是值本身。但我不确定。能不能请一些人点灯。in.Net==运算符重载以比较字符串的内容

使用1.equalsa,String是一个对象,所以使用equals进行比较

我知道==运算符是比较的,它是同一个对象吗

对象a不是具有常量字符串1的同一对象


因此,返回false

==is在比较字符串时不起作用,即使它不会创建错误。这对于Java中的任何对象都是正确的。使用.equals将得到正确的结果。就这么简单。我还是说我们需要一个选项,这不是Java close选项中比较字符串的方式。我不明白向下投票是关于什么的。@Marlon-研究工作,如果你将鼠标悬停在向下投票按钮上,你会看到这是点击它的第一个原因。这个问题在互联网上已经被回答了数百次,数千次。至少他没有真正尝试过这个代码,因为如果a==1会返回true,他会继续想,这就是你比较Stings的方式。它实际上是同一个对象,除非你的JVM坏了,不符合规范,否则它的计算结果实际上是真的。字符串文本被占用,这就是这个问题被反复问的原因。谢谢你纠正我的答案。我被误解了。