英文:
Why can't we use (==) instead of .equals() methods to compare string objects?
问题
Box b1 = new Box();
Box b2 = b1;
这里,b1 和 b2 引用同一个对象。因此,在两个字符串对象的情况下,为什么不能使用 == 运算符来比较它们,而不是使用 .equals() 方法呢?
英文:
Box b1 = new Box();
Box b2 = b1;
Here b1 and b2 refers to same object. So in case of 2 String objects why can't we use == to compare them instead of .equals() methods.
答案1
得分: 6
没什么实质区别。当你使用 == 来比较对象时,你比较的是它们的内存地址,而不是它们的值。在你的例子中,执行 b1 == b2 会返回 true,因为它们是同一个对象。然而,如果你改为:
Box b1 = new Box();
Box b2 = new Box();
现在如果你用 == 来比较它们,尽管这些对象完全相同,它会返回 false。对于字符串也是一样的。
英文:
There is no difference really. When you use == to compare objects, you're comparing their memory addresses, not their values. In your example, doing b1 == b2 will return true because they are the same object. However if you instead did:
Box b1 = new Box();
Box b2 = new Box();
Now if you compare them with == it will return false despite the fact that the objects are exactly the same. Same goes for Strings.
答案2
得分: 2
"=="比较的是对象引用本身,而不是它们的字面值。如果两个变量指向同一个对象,它将返回true。
因此,
String s1 = new String("hello");
String s2 = new String("hello");
在这里,
s1==s2将返回false,因为它们是不同的对象。
当你使用equals()时,它会比较内容的字面值并给出结果。
英文:
"==" compares Object references with each other and not their literal values. If both the variables point to same object, it will return true.
So,
String s1 = new String("hello");
String s2 = new String("hello");
Here
s1==s2, will return false as both are different objects.
When you use equals(), it will compare the literal values of the content and give its results.
答案3
得分: 1
== 比较内存地址,而 .equals() 比较值
String s1 = new String("HELLO");
String s2 = new String("HELLO");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
输出:
False
True
英文:
== Compares memory address while .equals() compares the values
String s1 = new String("HELLO");
String s2 = new String("HELLO");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
Output:
False
True
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论