Object的用法

Object的用法_第1张图片

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相等不一定相等。

Object的用法_第2张图片

 

上面是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方法

 

 

 

 

 

 

你可能感兴趣的:(java)