Java“abc”==“abc”操作

时间:2015-10-21 15:33:40

标签: java operators equals equals-operator

当我们这样做时:

String a = new String("abc");
String b = new String ("abc");

并执行a == b它会返回 false ,因为它们是2个不同的对象。
但是,当我们有这个:

String c = "abc";
String d = "abc";

我们执行c == d它会返回 true 。这是为什么?它还应该返回假吗?为什么==运算符在这种情况下表现为.equals()方法?

1 个答案:

答案 0 :(得分:1)

这是因为Java使用所谓的Stringpool并尝试重用旧的String-Literals来节省一些内存。但是如果你说“new String”,你总是根据Literal创建一个新的Object。请参阅:here我建议您始终使用Objects.equals(a,b),如果您想确保对象相等(或者如果您确定它不为null则在Object上调用相等)