• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:Java常见面试题-equals-和-的区别是什么

java 搞代码 3年前 (2022-02-19) 20次浏览 已收录 0个评论
文章目录[隐藏]

对于==
对于根本类型和援用类型 == 的作用成果是不同的,如下所示:
根本类型:比拟的是值是否雷同;
援用类型:比拟的是援用是否雷同;
代码示例:

代码解读:因为 x 和 y 指向的是同一个援用,所以 == 也是 true,而 new String()办法则重写开拓了内存空间,所以 == 后果为 false,而 equals 比拟的始终是值,所以后果都为 true。

对于equals
equals 实质上就是 ==,只不过 String 和 Integer 等重写了 equals 办法,把它变成了值比拟。看上面的代码就明确了。
首先来看默认状况下 equals 比拟一个有雷同值的对象,代码如下:


最初输入后果为 false,equals源码如下

原来 equals 实质上就是 ==。
那问题来了,两个雷同值的 String 对象,为什么返回的是 true?代码如下:

当咱们进入 String 的 equals 办法:

原来是 String 重写了 Object 的 equals 办法,把援用比拟改成了值比拟。
总结 :== 对于根本类型来说是值比拟,对于援用类型来说是比拟的是援用;而 equals 默认状况下是援用比拟,只是很多类从新了 equals 办法,比方 String、Integer 等把它变成了值比拟,所以个别状况下 equals 比拟的是值是否相等。

那么两个对象的 hashCode()雷同,则 equals()也肯定为 true,对吗?

不对,两个对象的 hashCode()雷同,equals()不肯定 true。
比方

执行的后果:

代码解读:很显然“通话”和“重地”的 hashCode() 雷同,然而 equals() 则为 false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,来源[email protected]搞@^&代*@码网并不一定能得出键值对相等。

最初

我整顿了一份Java零碎学习材料,如有须要请扫描下方二维码支付


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:Java常见面试题-equals-和-的区别是什么
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址