Object类
1、Object类概述
方法 | 说明 |
---|---|
Object clone() | 创建与该对象的类相同的新对象 |
boolean equals(Object) | 比较两对象是否相等 |
void finalize() | 当垃圾回收器确定不存在对该对象的更多引用时,对象垃圾回收器调用该方法 |
Class getClass() | 返回一个对象运行时的实例类 |
int hashCode() | 返回该对象的散列码值 |
void notify() | 激活等待在该对象的监视器上的一个线程 |
void notifyAll() | 激活等待在该对象的监视器上的全部线程 |
String toString() | 返回该对象的字符串表示 |
void wait() | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待 |
- 超类、基类,所有类的直接或间接父类,位于继承数的最顶层。
- 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。
- Object类中锁定义的方法,是所有对象都具备的方法。
- Object类型可以抽出任何对象。
- 作为参数,可以接受任何对象。
- 作为返回值,可返回任何对象。
2、getClass()方法
- public final Class<?> getClass(){}
- 返回引用中存储的实际对象类型。
- 应用:通常用于判断两个引用中实际存储对象类型是否一致。
Student类:
package Demo04;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
TestSudent类:
package Demo04;
public class TestStudent {
public static void main(String[] args) {
Student s1 = new Student("guhuo", 12);
Student s2 = new Student("mazi", 10);
Class classS1 = s1.getClass();
Class classS2 = s2.getClass();
if (classS1==classS2) {
System.out.println("s1和s2的class相等");
} else {
System.out.println("s1和s2的class不等");
}
}
}
输出结果:
s1和s2的class相等
3、hashCode()方法
- public int hashCode() {}
- 返回该对象的哈希值。
- 哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值。
- 一般情况下相同对象返回相同哈希码。
4、toString()方法
- public String toString() {}
- 返回该对象的字符串表示。类的全名称+哈希值。
- 可以根据程序需求覆盖该方法。
5、equals()方法
- public boolan equals(Object obj) {}
- 默认实现为(this == obj),比较两个对象地址是否相等。
- 可进行覆盖,比较两个对象的内容是否相等。
6、finalize()方法
- 当对象被判定为垃圾对象时,由JVM自动调用次方法,用以标记垃圾对象,进入回收队列。
- 垃圾对象:没有有效引用指向此对象,为垃圾对象。
- 垃圾回收:由GC销毁垃圾对象,释放数据存储空间。
- 自动回收机制:JVM的内存消耗尽,一次性回收所有垃圾对象。
- 手动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。
- 手动回收机制:使用System.gc(),通知JVM执行垃圾回收。