换句话说,如果我有两个变量:
String s;
String t;
这样s == t
,然后s.equals(t)
保证返回true?
我认为这个问题的答案显然是肯定的,但是我的教授提供了一个关于入门编程课程决赛的练习考试,他说事实并非如此。想法?
我意识到它们可能为空,因此在引用上是平等的,但你无法在它们上面调用.equals
。
答案 0 :(得分:1)
==
表示指向两个对象的指针是相同的。这意味着对象包含在同一个内存位置。如果这是真的,它们是同一个对象并且必须保持相同的值,所以.equals()
也是如此。
请注意,情况恰恰相反 - .equals()
为真并不保证==
为真。
唯一的例外是,如果您覆盖.equals()
方法以始终返回false,或者两个对象都是null
。
答案 1 :(得分:0)
不,这并不意味着相同。
s1==s2
将返回字符串池中s1
和s2
上的引用是否相同,而不是它们的内容。
虽然s1.equals(s2)
会检查字符串s1
和s2
的内容。