Object的用法

3点,

首先equals的四大特性, 自反性,就是自己一定要等于自己;对称性,x=y,那么y=x一定可以;传递性,x=y,y=z, 那么x=z; 持久性:x=y,那么一段时间内一直等于y.

 

第二,表明这个equals的意义,就是refer to the same object

第三,如果重新hashcode,要保证the equal objects mast have equal hashcode

但是hashcode相等不一定相等。

 

上面是HashMap里面的一个内部类,Node,覆写了equals,于是也覆写了hashcode,因为如果不覆写,那么就是使用object自带的哪个,那个是native方法,是根据一定算法生成,符合Object类的equals函数,也就是两个对象一样。其实覆写hashcode最重要的是确保equals返回true的时候,hashcode一样;还有就是不能重复率太高,不然放入hashmap里面冲突的概率会非常高。

 

这样一来,最简单的就是上面那样,调用值的hashcode方法并运算一下,不一定交,并,或也可以。

^表示异或。

 

Object里面还有关于锁的wait和notify。详情请看之前的博客。

 

Object里面另一个重要的函数,就是finalize函数。其实finalize函数可以理解为垃圾回收前的最后确认函数。如果在finalize函数里面再次给要回收的对象加上引用,那么就不会被回收。

只会在确认这个函数没有引用的时候调用。

 

Object位于java.lang包里面。还有一个Objects位于java.util,是Object的一个工具类。主要是比较和判空,都是static方法

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值