java中的引用相等是否意味着字符串的结构相等?

时间:2016-05-09 00:06:58

标签: java string reference equality

换句话说,如果我有两个变量:

String s;
String t;

这样s == t,然后s.equals(t)保证返回true?

我认为这个问题的答案显然是肯定的,但是我的教授提供了一个关于入门编程课程决赛的练习考试,他说事实并非如此。想法?

我意识到它们可能为空,因此在引用上是平等的,但你无法在它们上面调用.equals

2 个答案:

答案 0 :(得分:1)

==表示指向两个对象的指针是相同的。这意味着对象包含在同一个内存位置。如果这是真的,它们是同一个对象并且必须保持相同的值,所以.equals()也是如此。

请注意,情况恰恰相反 - .equals()为真并不保证==为真。

唯一的例外是,如果您覆盖.equals()方法以始终返回false,或者两个对象都是null

答案 1 :(得分:0)

不,这并不意味着相同。

s1==s2将返回字符串池中s1s2上的引用是否相同,而不是它们的内容。

虽然s1.equals(s2)会检查字符串s1s2的内容。