![](/img/trans.png)
[英]Why does Kotlin use == for structural equality and introduce === for referential equality
[英]Does referential equality in java imply structural equality for Strings?
换句话说,如果我有两个变量:
String s;
String t;
这样s == t
,那么s.equals(t)
保证返回 true?
我认为这个答案显然是肯定的,但它是在我的教授为介绍性编程课程期末考试提供的练习考试中,他说不是。 想法?
我意识到它们可能为空,因此在引用上是相等的,但是你不能对它们调用.equals
。
==
表示指向两个对象的指针是相同的。 这意味着对象包含在相同的内存位置。 如果这是真的,它们是同一个对象并且必须保持相同的值,所以.equals()
也将是真的。
请注意,相反的情况并非如此 - .equals()
为真并不能保证==
为真。
唯一的例外是,如果您覆盖.equals()
方法以始终返回 false,或者两个对象都为null
。
不,这并不意味着相同。
s1==s2
将返回字符串池上s1
和s2
上的引用是否相同,而不是它们的内容。
而s1.equals(s2)
将检查字符串s1
和s2
的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.