Java笔记之-- equals,==,instanceof的区别 以及对hashcode的理解

一.
equals:对于字符串来说,equals比较的是俩者的内容是否相同,对于其他的引用来说,equals比较的是俩者是否为同一对象(即地址是否相等)

再提一点:java里面的string有共享池这一概念,即String xx = “”(或者String xx = “xx” + “xx”);时的对象会放到同一个共享池里面,当下一个String xx = “str”时,若共享池里含有与str相同内容的对象时,那么他们实则为同一对象(也就是把共享池的对象拿出来给新来的);
但是String xx = new String();即new出来的对象都会放在堆内存里,是一个全新的对象,所以不管他们的内容是不是相等,他们都不是同一个对象,也就是他们的内存地址一定不相等。

二.
“==”:判断俩者的对象是否相等(即地址是否相等)

三.
instanceof:判断俩者是否为同一类

四.
hashcode:哈希值是按照某个原则来计算的。
所以内容相等的(即equals返回true,或者==的)hashcode值一定相等

当内容不一样时hashcode可能相等也可能不相等,比如:当出现哈希冲突的时候(也就是当内容不一样但是计算出来的hashcode一样的时候,数据结构里面会提到)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值