Object类方法和作用详解

Object 类是 Java 中所有类的超类(或称为根类)。这意味着,在 Java 中,任何类(除了 Object 本身和数组类)都隐式地继承自 Object 类。因此,所有的 Java 对象都继承了 Object 类的方法和属性。下面是一些 Object 类中最重要的方法和它们的作用:

1. toString()

作用:返回该对象的字符串表示。

默认实现:通常返回类名 + "@" + 对象的哈希码的无符号十六进制表示(例如,ClassName@15db9742)。

示例

 

java复制代码

public class MyClass {
@Override
public String toString() {
return "MyClass instance with some data";
}
}

2. equals(Object obj)

作用:指示其他某个对象是否与此对象“相等”。

默认实现:比较对象的内存地址(即是否是同一个对象)。

重写建议:通常用于比较对象的内容是否相等。

示例

 

java复制代码

public class MyClass {
private int id;
public MyClass(int id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass myClass = (MyClass) obj;
return id == myClass.id;
}
}

3. hashCode()

作用:返回该对象的哈希码值。支持将对象有效地存储在哈希表中,例如 HashMapHashSet 和 Hashtable

默认实现:根据对象的内存地址计算一个哈希码。

重写建议:如果重写了 equals() 方法,通常也需要重写 hashCode() 方法,以确保相等的对象具有相同的哈希码。

示例

 

java复制代码

@Override
public int hashCode() {
return Objects.hash(id); // 或者使用其他自定义方式计算哈希码
}

4. getClass()

作用:返回此 Object 运行时的类。

示例

 

java复制代码

MyClass obj = new MyClass();
Class<?> clazz = obj.getClass();
System.out.println(clazz.getName()); // 输出 "MyClass"

5. clone()

作用:创建并返回此对象的一个副本。

默认实现:抛出 CloneNotSupportedException

重写建议:实现 Cloneable 接口并重写 clone() 方法。

示例

 

java复制代码

public class MyClass implements Cloneable {
private int id;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

6. notify()

作用:唤醒一个在此对象监视器上等待的单个线程。

示例

 

java复制代码

synchronized (this) {
notify();
}

7. notifyAll()

作用:唤醒所有在此对象监视器上等待的线程。

示例

 

java复制代码

synchronized (this) {
notifyAll();
}

8. wait()

作用:导致当前线程等待,直到其他线程调用此对象的 notify() 或 notifyAll() 方法。

三个重载版本

  • wait()
  • wait(long timeout)
  • wait(long timeout, int nanos)

示例

 

java复制代码

synchronized (this) {
wait();
}

9. finalize()

作用:当垃圾收集器确定不再需要此对象时,垃圾收集器将调用此方法。

注意事项:不推荐使用,因为它不能保证何时被调用,甚至可能不被调用。在 Java 9 中已被弃用,并在后续版本中移除。

示例

 

java复制代码

@Override
protected void finalize() throws Throwable {
try {
// 清理代码
} finally {
super.finalize();
}
}

总结

  • toString():返回对象的字符串表示。
  • equals(Object obj):比较对象是否相等。
  • hashCode():返回对象的哈希码。
  • getClass():返回对象的运行时类。
  • clone():创建对象的副本。
  • notify():唤醒一个等待线程。
  • notifyAll():唤醒所有等待线程。
  • wait():使当前线程等待。
  • finalize():垃圾收集时调用(不推荐使用)。

理解这些方法及其作用是编写健壮 Java 代码的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值