Object类
java.lang.Object时所有类的超类。Java中所有类都实现了这个类中的方法。
toString方法
将Java对象转换成字符串的表示形式。
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
默认实现是:完整类名+ @ + 十六进制的数字
如果你不满意toString的实现不满意,可以对其进行重写,使其更具有可读性,符合自己的需求。
对于equals方法也是一样,如果业务需要,而equals的比较方法不满足,也可以对其重写,以满足需求。
- 当print()输出的是一个引用时,若该引用不是null时,默认调用该引用的toString方法输出
finalize方法
- 当一个对象的引用为null了,这个对象就要被GC回收释放了(GC也会自动调用该方法),在对象即将被释放之前可以使用该方法执行一些“临终操作”
- 这是Java给程序员提供的一个时机
- finalize()的默认实现为空,若要使用必须重写
- Java9之后,该方法已经被废弃了
clone方法
- 开发中要保护原对象的数据结构。通常复制一份,生成一个新对象,对新对象进行操作
- Object中的clone方法是受保护的protected,因此一般需要对clone方法进行重写
- 凡是参加clone的对象,必须实现标志接口Cloneable,否则会报错,无法克隆错误
浅克隆与深克隆
- 对浅克隆出来的对象进行修改操作,不会影响原来的对象
- 浅克隆会导致下面这种情况出现,浅克隆一个User对象,但是User对象中有个Address类型的成员变量,更改浅克隆对象的add变量值,会修改原先对象的add值,这不是我们想看到的,因此就需要克隆的时候,把Address也克隆一个,这种克隆称为深克隆
- 如何深克隆
在User的重写clone方法中,让User关联的Address对象也克隆一份
内部类
在类中定义的类称为内部类,分为静态内部类、实例内部类、局部内部类、匿名内部类。
匿名内部类可以不显示定义一个类,直接在new对象的时候进行实现即可,适用于只使用一次的类
注:本文章源于学习动力节点老杜
的java教程视频后的笔记整理,方便自己复习的同时,也希望能给csdn的朋友们提供一点帮助。