Object类
2021年7月15日大约 3 分钟约 786 字
Object
类是所有类、数组、枚举类的父亲。
Java 对象都是 Object
类的实例,都可直接调用该类中定义的方法,这些方法提供了处理 Java 对象的通用方法。
Object类的方法 | 作用 |
---|---|
boolean equals(Object obj) | 判断与其他引用变量是否相等,默认同== 运算,即只有两个引用变量指向同一个对象才会返回true 。1) 可被重写为自己的判定标准; 2) String 类已经重写了Object 的equals() 方法,其判定标准为两个字符串所包含的字符序列是否相同。 |
String toString() | 一种“自我描述”的方法,返回该对象实例的"类名+@+hashCode"值 常常被用户重写为自己希望的返回值 调用Java的print相关函数时打印出来的内容其实就是toString() 方法的返回值 |
int hashCode() | 返回该对象的hashCode 值,默认情况下根据对象的地址计算,但很多类都重写了此方法,不再根据地址计算 |
Class<?> getClass() | 返回该对象的运行时类,其是一个final 方法 |
protected void finalize() | 当系统中没有引用变量引用到该对象时,垃圾回收器调用此方法来清理该对象的资源 |
wait() | 导致当前线程等待,直到其他线程调用该同步监视器的notify() 或notifyAll() 方法来唤醒该线程。其有三种重载形式。 |
notify() | 唤醒在此同步监视器上等待的单个线程。如果所有线程都在此同步监视器上等待,则会选择任意唤醒其中一个线程。只有当前线程放弃对该同步监视器的锁定后(使用wait() 方法),才可以执行被唤醒的线程。 |
notifyAll() | 唤醒在此同步监视器上等待的所有线程。只有当前线程放弃对该同步监视器上的锁定后,才可以执行被唤醒的线程。 |
protected clone() | 自我克隆。这只是一种“浅拷贝”。 |
Object
类提供的拷贝机制只对对象里各实例变量进行“简单复制”,如果实例变量的类型是引用类型,Object
的 Clone 机制只是简单地复制这个引用变量,这样原有对象的引用类型的实例变量和克隆对象的引用类型的实例变量依然指向内存中的同一个实例。

如果开发者需要对对象进行深拷贝,需要开发者自己进行“递归”克隆,保证所有类型的成员变量值所引用的对象都被复制了。
toString()
方法的几点说明:
- 必须被声明为
public
; - 返回类型为
String
; - 方法名必须为
toString
,且没有参数; - 在方法体中不要使用输出语句,如
System.out.println()
等; - 只要对象与一个字符串通过操作符
+
连接起来,Java编译器就会自动地调用toString
方法来获得这个对象的字符串描述。