换句话说,如果我有两个变量:
String s;
String t;
这样s == t
,那么s.equals(t)
就保证返回true吗?
我认为这个问题的答案显然是肯定的,但这是我的教授为入门编程类(class)期末考试提供的练习考试,他说事实并非如此。想法?
我意识到它们可能为 null,因此引用相等,但您无法对它们调用 .equals
。
最佳答案
==
表示指向两个对象的指针相同。这意味着对象包含在同一内存位置。如果这是真的,那么它们是同一个对象并且必须具有相同的值,因此 .equals()
也将为 true。
请注意,反之则不然 - .equals()
为 true 并不能保证 ==
为 true。
唯一的异常(exception)是,如果您重写 .equals()
方法以始终返回 false,或者两个对象都为 null
。
关于java - java中的引用相等是否意味着字符串的结构相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37106158/