Java等于/等于和==运算符之间的区别?
a == b
和之间有什么区别a.Equals(b)
?
回答:
假设的类型a
和b
是引用类型:
在Java中,
==
将始终比较身份 -即两个值是否是对同一对象的引用。这也称为引用相等。Java没有任何用户定义的运算符重载。在
C#
中,这取决于。除非有一个重载的运算符来处理它,否则==的行为类似于Java(即比较引用相等性)。但是,如果存在一个与and 的编译时类型匹配的重载(例如,如果它们都被声明为字符串),那么将调用该重载。这可以表现怎么想的,但它通常实现的值相等(即和可参照不同,但相同的值,它仍然会返回true)。abab
在这两种语言中,a.Equals(b)
或a.equals(b)
都会调用由声明的virtual Equals/ equals
方法Object
,除非通过的编译时类型引入了更具体的重载a。在a引用的对象的执行时类型中,可以覆盖或可以不覆盖此对象。在.NET和Java中,该实现Object
还检查身份。请注意,这取决于执行时间类型,而不是过载解析所依赖的编译时间类型。
当然,如果a
是,null
则在尝试调用或时会得到一个NullReferenceException/
。NullPointerExceptiona.equals(b)a.Equals(b)
以上是 Java等于/等于和==运算符之间的区别? 的全部内容, 来源链接: utcz.com/qa/429427.html