Java中的父对象
在Java中,每个对象都有一个父对象。这个父对象是Java对象模型中的顶级对象,被称为Object
类。所有的类都直接或间接地继承自Object
类,因此可以说Object
类是Java中所有类的父对象。
Object类的基本方法
Object
类提供了一些基本的方法,这些方法可以被所有的Java对象调用。下表是Object
类的一些常用方法:
方法名 | 描述 |
---|---|
equals(Object obj) |
用于判断两个对象是否相等 |
toString() |
返回对象的字符串表示 |
hashCode() |
返回对象的哈希码 |
getClass() |
返回对象的类 |
wait() |
线程等待 |
notify() |
唤醒一个等待中的线程 |
notifyAll() |
唤醒所有等待中的线程 |
下面是一个简单的示例,展示了如何使用Object
类的一些方法:
public class ObjectExample {
public static void main(String[] args) {
// 创建两个对象
Object obj1 = new Object();
Object obj2 = new Object();
// equals方法比较两个对象是否相等
boolean isEqual = obj1.equals(obj2);
System.out.println("obj1 equals obj2: " + isEqual);
// toString方法返回对象的字符串表示
String str = obj1.toString();
System.out.println("obj1 toString: " + str);
// hashCode方法返回对象的哈希码
int hashCode = obj1.hashCode();
System.out.println("obj1 hashCode: " + hashCode);
// getClass方法返回对象的类
Class<?> objClass = obj1.getClass();
System.out.println("obj1 class: " + objClass.getName());
// wait方法让线程等待
synchronized (obj1) {
try {
obj1.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// notify方法唤醒等待中的线程
synchronized (obj1) {
obj1.notify();
}
// notifyAll方法唤醒所有等待中的线程
synchronized (obj1) {
obj1.notifyAll();
}
}
}
equals方法
equals(Object obj)
方法是用来判断两个对象是否相等的。默认情况下,它会使用对象的引用比较两个对象。也就是说,只有当两个对象引用同一个对象时,equals
方法才返回true
。但通常情况下,我们需要根据对象的内容来判断它们是否相等。
为了实现对象内容的比较,我们需要重写equals
方法。下面是一个重写equals
方法的示例:
public class Person {
private String name;
private int age;
// 构造方法和其他方法省略
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
}
在上面的示例中,equals
方法首先判断两个对象的引用是否相同,如果相同则直接返回true
。然后判断传入的对象是否为null
或者与当前对象的类不同,如果是则返回false
。最后,比较两个对象的内容,包括姓名和年龄是否相等。
toString方法
toString()
方法返回对象的字符串表示。默认情况下,它返回一个包含类名和哈希码的字符串。但通常情况下,我们需要根据对象的属性来自定义toString
方法的实现。
下面是一个重写toString
方法的示例:
public class Person {
private String name;
private int age;
// 构造方法和其他方法省略
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
在上面的示例中,toString
方法返回一个包含姓名和年龄的字符串。
hashCode方法
hashCode()
方法返回对象的哈希码。哈希码是一个由对象的内容计算出来的整数值,