所有类的直接或间接继承Object,位于继承树的最顶层。
任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。
Object类中所定义的方法,是所有对象都具备的方法。
Object类型可以存储任何对象。
public final Class<?> getClass() {}
返回引用中存储的实际对象类型 (类对象)。
应用:通常用于判断两个引用中实际存储对象类型是否一致。
public int hashCode(){}
返回该对象的十进制的哈希(hash)码值
哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值。
public String toString(){}
返回该对象的字符串表示形式。
可以根据程序需求重写该方法,如:展示对象各个属性值。
重写toString()方法:
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", score=" + score +
'}';
}
public boolean equals(Object obj){}
默认实现为(this == obj),比较两个对象地址是否相同。
可进行重写,比较两个对象的内容是否相同。
重写equals()方法:
@Override
public boolean equals(Object obj) {
//1 判断obj是否为null
if (obj==null) {
return false;
}
//2 判断this和obj地址相同
if (this == obj) {
return true;
}
//3 判断obj是否为Student类型
if (obj instanceof Student) {
//4 向下转型
Student s = (Student) obj;
//5 判断属性值是否相同
if (this.name.equals(s.name) && this.gender.equals(s.gender) && this.age==s.age) {
return true;
}
}
return false;
}
res:
1 基本类型 == 比较的是值, 引用类型 equals 方法比较的是地址
2 如果equals方法不能满足子类的需求, 可以重写equals方法
当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列。
垃圾对象:没有有效引用指向此对象时,为垃圾对象。
垃圾回收: 由GC(Garbage Collector)销毁垃圾对象,释放数据存储空间。
自动回收机制:JVM自动回收所有垃圾对象。
手动回收机制:使用System.gc(); 通知JVM执行垃圾回收。
eg:
@Override
protected void finalize() throws Throwable {
System.out.println(this.name+"被回收了");
}
Student student = new Student("阿丹",16,"女",100);
student = null;
System.gc();
res:
阿丹被回收了