jdk,jre,jvm&equals hashcode

jdk,jre,jvm

jdk 包含jre jre包含jvm
Jdk(java se Development kit)它提供了编译,运行java程序所需的工具和资源
在这里插入图片描述
Jre(java runtime environment) java的运行环境,用于解释执行java字节码文件,jre就可以运行java程序。程序开发者必须安装jdk来编译和调试
在这里插入图片描述
jvm(java virtual mechinal)是jre的部分是java实现跨平台的最核心部分,负责执行字节码文件,所有平台上的jvm向编译器提供相同的jiekou,编译器只需要面向虚拟机。

SKD是(software development kit)软件开发工具包,为软件开发提供了一个平台。
java JDK是针对java开发员的产品,jdk已经成为使用最为广泛的java sdk

重写equals,为啥还要重写hashcode

equals 比较的是对象的内容,hashcode比较的是对象的内存地址
方法的重载和重写首先都是多态的实现,重载是编译时多态,重写是运行时多态
重载:发生在本类 方法名相同 参数必须修改 返回类型也可修改 比如构造函数的不同
重写:发生在父类接口与实现类 方法名相同 参数不可修改 返回类型不可修改 override

1.使用hashcode 方法提前校验,可以避免每一次对比都调用equals方法,提高效率
2.保证是同一对象,如果重写了equals方法,而没有重写hashcode方法会出现equals相等的对象,hashcode不相等的情况,重写hashcode方法就是为了避免这种情况的出现。
hash类型的的存储结构,添加匀速重复性校验的标准就是先去hashcode后判断equals();
equals()相等的两个对象,hashcode()一定相等;
反过来hashcode不等,那么equals肯定不等
hashcode相等equals可能相等也可能不等。

对于hash结构的数据类型在进行重复性校验时,会对key值先进性hashcode的比对然后equals比较从而排除重复的key。
hashmap中比较key是否相等因为hashcode继承了object的所以hash’code码为默认的内存地址,这样即便有相同含义的两个对象,比较也是不相等的。hashmap比较key,先求出key的hashcode,比较其值是否相等,若相等在比较equals,若相等则认为他们相等 ,若不等则认为他们不等。若只重写hashcode不重写equals,比较equals时只是看他们是否为同一对象(即进行内存地址的比较),所以必定要两个方法一起重写。
hashcode不重载 不同的对象 其返回的对象地址一定不同,重载返回的对象内存就可能相同。
重载hashcode就是为了对同一个key能得到相同的hashcode,这样hashmap就可以定位到我们制定的key,重载equals为保证当前对象和key上所保存的对象是相等的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值