Java-Object类浅析

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执行垃圾回收。

你可能感兴趣的:(Java基础,java)