Java Object类详解_动力节点Java学院整理
简介
Object
类是Java中所有类的根类。在Java中,每个类都直接或间接继承自Object
类。因此,Object
类的方法在Java中可被任意对象使用。在Java中,通过继承以及实现Object
类中的方法,可以获得以下功能:
- 重写
equals()
方法,实现对象之间的比较; - 重写
hashCode()
方法,实现哈希表的使用; - 重写
toString()
方法,得到对象的字符串表示; - 允许使用
wait()
和notify()
方法实现线程同步; - 允许使用
clone()
方法实现对象的克隆。
equals()
equals()
方法用于比较两个对象是否相等。默认情况下,Java中的equals()
方法比较两个对象的对象地址是否相等。如果需要比较对象的属性是否相等,则需要重写equals()
方法。以下是一个示例:
public class Person {
private String name;
private int age;
// 构造方法和getter/setter方法
@Override
public boolean equals(Object obj) {
if (obj instanceof Person) {
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age;
}
return false;
}
}
hashCode()
hashCode()
方法用于计算对象的哈希码,常用于集合类中的哈希表。默认情况下,hashCode()
方法返回的是对象的地址。如果需要使用自定义的属性计算哈希码,则需要重写hashCode()
方法。以下是一个示例:
public class Person {
private String name;
private int age;
// 构造方法和getter/setter方法
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
toString()
toString()
方法用于返回对象的字符串表示。如果不重写该方法,则默认返回对象的地址。以下是一个示例:
public class Person {
private String name;
private int age;
// 构造方法和getter/setter方法
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
wait()和notify()
wait()
和notify()
方法用于实现线程同步。在多线程程序中,线程之间需要进行协作,以保证任务的正确完成。wait()
方法用于让当前线程等待,而notify()
方法用于唤醒等待的线程。以下是一个示例:
public class Task {
private boolean isFinished = false;
public synchronized void finish() {
isFinished = true;
notify();
}
public synchronized void waitUntilFinished() throws InterruptedException {
while (!isFinished) {
wait();
}
}
}
clone()
clone()
方法用于对象的克隆。默认情况下,对象的克隆是浅拷贝。如果需要进行深拷贝,则需要重写clone()
方法。以下是一个示例:
public class Person implements Cloneable {
private String name;
private int age;
private List<String> hobbies;
// 构造方法和getter/setter方法
@Override
public Person clone() throws CloneNotSupportedException {
Person p = (Person)super.clone();
p.hobbies = new ArrayList<>(this.hobbies);
return p;
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Object类详解_动力节点Java学院整理 - Python技术站