文章目录
- 一、Object
- 1、Object使用
- 2、toString
- 3、equals和==
- 4、hashCode
- 5、clone
- 6、finalize
- 7、getClass
- 8、wait、notify和notifyAll
- 二、使用步骤
一、Object
1、Object使用
Object类是所有Java的根父类
如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object
Object类中属性方法具有通用性
Object中只声明了一个空参的构造器
finalize()方法当我们对象被回收之前,我们会调用当前对象的finalize方法。不要主动调用,一般由垃圾回收器调用当前对象的finalize方法
AnimalTest animalTest = new AnimalTest();System.out.println(animalTest.getClass().getSuperclass());
2、toString
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}@Overridepublic String toString() {return "Teacher{" +"name='" + name + '\'' +", address=" + address +'}';}
3、equals和==
== 使用
必须两个保证两个变量类型相同
对于基本数据类型:比较的是两个变量值是否相等(不一定数据类型要相同,自动类型提升 唯独boolean类型不参于比较)
对于引用类型:比较的是两个对象的内存地址值是否相同,既两个引用是否指向同一个对象实体(对空间中是否同一个对象)
equals
只适用于引用数据类型
Object的equals方法:
如果没有重写equals方法,它是Object中的方法也是和==作用相同
public boolean equals(Object obj) {return (this == obj);}
String、Date、File 包装类等的equals方法:都重写了Object中的equals(),比较的是否值相等
== 重写自己定义的equals方法(比较两个对象的每个属性是否相同)==
通常情况下,我们自定义的类如果使用equals()方法,也通常是比较两个对象的实体内容是否相同。那么,我们就需要对Object类中的equals()方法重写。
public class Teacher {private String name;private Address address;@Overridepublic boolean equals(Object o) {if (this == o) {return true;}if (o instanceof Teacher){Teacher teacher = (Teacher) o;//比较两个对象的每个属性是否相同return Objects.equals(this.name, teacher.name) && Objects.equals(this.address, teacher.address);}return false;}
4、hashCode
public native int hashCode();@Overridepublic int hashCode() {return Objects.hash(name, address);}
5、clone
实现implements Cloneable接口重写clone方法
InstanceofTest instanceofTest = new InstanceofTest();InstanceofTest clone = (InstanceofTest)instanceofTest.clone();@Overridepublic Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {throw new AssertionError();}}
6、finalize
finalize()方法当我们对象被回收之前,我们会调用当前对象的finalize方法。不要主动调用,一般由垃圾回收器调用当前对象的finalize方法
7、getClass
反射时class类的实例获取:对象.getClass()用到的
8、wait、notify和notifyAll
线程中使用