英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论