当前位置: 首页> 教育> 高考 > Java中Object的常用方法

Java中Object的常用方法

时间:2025/7/16 14:14:18来源:https://blog.csdn.net/weixin_45049746/article/details/141831849 浏览次数:0次

1. toString()

toString() 方法返回一个表示该对象的字符串。默认情况下,这个方法返回对象的类名、@"符号以及对象的哈希码的十六进制表示。通常情况下,会覆盖这个方法以提供更有意义的字符串表示。

public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}public static void main(String[] args) {Person person = new Person("Alice", 30);System.out.println(person.toString()); // 输出 Person{name='Alice', age=30}}
}

2. equals(Object obj)

equals() 方法用于比较两个对象是否相等。默认实现仅检查对象引用是否相同。通常会重写这个方法来实现更具体的逻辑,比如根据对象的某些属性来判断。

public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic 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 &&name.equals(person.name);}public static void main(String[] args) {Person alice1 = new Person("Alice", 30);Person alice2 = new Person("Alice", 30);System.out.println(alice1.equals(alice2)); // 输出 true}
}

3. hashCode()

hashCode() 方法返回一个整数形式的哈希码值。当两个对象根据 equals() 方法比较相等时,它们的 hashCode() 必须也相等。通常,当重写了 equals() 方法时,也应该重写 hashCode() 方法。

public class Person {private String name;private int age;// ... (构造器和属性省略)@Overridepublic int hashCode() {int result = name != null ? name.hashCode() : 0;result = 31 * result + age;return result;}// ... (equals 方法省略)
}// 在 main 方法中测试
System.out.println(alice1.hashCode()); // 输出一个哈希码值
System.out.println(alice2.hashCode()); // 输出相同的哈希码值

4. clone()

clone() 方法创建并返回一个对象的副本。需要注意的是,只有实现了 Cloneable 接口的类才能安全地调用 clone() 方法。

public class Person implements Cloneable {private String name;private int age;// ... (构造器和属性省略)@Overrideprotected Person clone() throws CloneNotSupportedException {return (Person) super.clone();}public static void main(String[] args) throws CloneNotSupportedException {Person alice = new Person("Alice", 30);Person clonedAlice = alice.clone();System.out.println(clonedAlice == alice); // 输出 falseSystem.out.println(clonedAlice.equals(alice)); // 输出 true}
}

5. getClass()

getClass() 方法返回代表该对象的类的 Class 对象。

public class Person {// ... (类定义省略)public static void main(String[] args) {Person alice = new Person("Alice", 30);Class<?> clazz = alice.getClass();System.out.println(clazz.getName()); // 输出 com.example.Person (假设包名为 com.example)}
}

6. notify(), notifyAll(), wait()

这些方法与线程同步相关,用于控制对象的锁。notify() 唤醒正在等待该对象锁的一个线程,notifyAll() 唤醒所有等待该对象锁的线程,而 wait() 则让当前持有该对象锁的线程进入等待状态。

public class Example {public static void main(String[] args) {final Object lock = new Object();Thread t1 = new Thread(() -> {synchronized(lock) {try {System.out.println("Thread 1 waiting.");lock.wait(); // 释放锁并等待System.out.println("Thread 1 resumed.");} catch (InterruptedException e) {e.printStackTrace();}}});Thread t2 = new Thread(() -> {synchronized(lock) {System.out.println("Thread 2 notifying.");lock.notify(); // 唤醒等待的线程}});t1.start();t2.start();}
}
关键字:Java中Object的常用方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: