Java中的Object类
一、概念
- Object类是所有类的父类/基类/超类,所有Java类都直接或者间接继承了这个类
- 特点:
- Object类的引用中可以存储任何类型的对象 Object o = new …
- Object类中的方法被所有类默认继承
二、Object类中的方法
- getClass():
- 返回值:返回该对象运行时的实际类型
- 作用:判断对象的实际类型
- hashCode():
- 返回值:返回一个十进制的整数值(int类型)
- 作用:提高使用到hashCode的集合的效率
- equals():
- 返回值:返回一个布尔值
- 作用:对比两个对象的内容是否相同
- 注意:
- Object类默认的equals方法对比的是两个对象的地址是否相同
- 使用的时候需要子类覆盖equals方法
- 覆盖原则:对比内容是否相同:是否需要对比所有属性则需要根据业务需要确定
- 覆盖的方式:
- 判断自身对象与参数对象是否是同一个对象
- 判断参数对象是否为空
- 判断自身对象与参数对象类型是否一致
- 对参数对象进行强制类型转换
- 根据业务需要对具体属性进行对比
- toString()
- 返回值:返回该对象的字符串形式表达(String类型)
- 作用:用于展示对象的内容
- 注意:
- Object类默认的toString方法打印的是该对象的地址信息,包括全限定名和地址
- 使用的时候需要覆盖toString方法
- 覆盖的时候根据业务需要将对象属性拼接成字符串
- finalize()
- 垃圾回收器在回收垃圾对象的时候,自动调用的方法
- 作用:在对象被回收的时候被调用
- 注意:
- 由于垃圾回收时机不确定,所以不建议将资源释放的代码写在finalize方法中
- System.gc();语句仅声明垃圾回收器的启动,并不能决定是否启动成功
三、区别
- equals 和 == 的区别
- ==号用于对比两端的值是否相等
- 如果对比的是基本数据类型,对比值是否相同
- 如果对比的是引用数据类型,对比地址是否相同
- equals用于对比对象的内容是否相同
- Object类中的equals方法用于对比地址是否一致
- 子类覆盖之后,用于对比属性是否相同
- ==号用于对比两端的值是否相等
- final和finallize的区别
- final是修饰符,用于修饰类,变量和方法
- finalize是Object类的成员方法,垃圾回收器