【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!
[1]
🔥知识点内容
🔓1. Object [2]
Object
类是Java语言中所有类的根
,所有的类都直接或间接的继承了Object类
;
数组
也继承了Object类;
Object类中定义了11个方法
,任何类都默认拥有
(包括数组),可以使用API文档查询;
学几个主要的如下
🔓2. Object --- equals [3]
Object类中定义了equals方法【 public boolean equals(Object obj) 】,用来
比较两个对象的虚地址
,如果虚地址相同
则返回true
,否则返回false;
Object类中的equals方法的作用,与==
相同,都是比较两个对象的虚地址
;
很多类覆盖了equals方法,用来比较两个对象的属性值,如果属性值相同,则认为两个对象相等;例如,String类就覆盖了equlas方法,用来比较两个字符串的字符序列值
image.png
image.png
image.png
🔓3. Object --- hashCode [4]
Object类中定义了hashCode方法【 public int hashCode() 】,用来
返回对象的哈希码
;
hashCode方法主要为了配合基于哈希的集合类一起工作
,例如HashSet、HashMap等【集合章节学习】;
默认情况下【即没有重新hashCode方法时】,当两个引用的虚地址相同时,hashCode返回相同的值,否则返回不同的值;
🔓4. Object --- finalize [5]
Java和C++不同,没有提供析构方法
Object中包含了一个叫做finalize()的方法
,提供在对象被回收时调用以释放资源
,默认情况下其不执行任何动作
由于Object是Java继承体系的根,因此事实上所有的Java类都具备finalize方法
当垃圾回收器确定了一个对象没有任何引用时,其会调用finalize()方法。但是,finalize方法并不保证调用时机,因此也不建议重写finalize()方法
每个对象只能被GC自动调用finalize( )方法一次
。如果在finalize( )方法执行时产生异常(exception),则该对象仍可以被垃圾收集器收集
Java语言允许程序员为任何方法添加finalize( )方法,该方法会在垃圾收集器交换回收对象之前被调用。但不要过分依赖该方法对系统资源进行回收和再利用,因为该方法调用后的执行结果是不可预知的
当finalize( )方法尚未被调用时,System. runFinalization( )方法可以用来调用finalize( )方法,并实现相同的效果,对无用对象进行垃圾收集
如果必须要重写finalize()方法,请记住使用super.finalize()调用父类的清除方法,否则对象清理的过程可能不完整