Java面试必备:Java Object类中的方法及其作用

🏛️ 365游戏厅网页登录 ⏳ 2025-10-06 02:13:23 👤 admin 👁️ 6691 💎 35
Java面试必备:Java Object类中的方法及其作用

Java基础面试题 - Java Object类中有什么方法,有什么作用?

概述

在Java中,Object类是所有类的超类,位于java.lang包中。每个类都直接或间接继承自Object类。了解Object类中的方法对于理解Java对象的基本行为至关重要。

Object类中的方法

以下是Object类中定义的所有方法及其作用:

1. getClass()

public final native Class getClass()

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

示例:

Object obj = new String("Hello");

Class clazz = obj.getClass();

System.out.println(clazz.getName()); // 输出: java.lang.String

2. hashCode()

public native int hashCode()

作用:返回对象的哈希码值,用于哈希表(如HashMap)中。

示例:

String str = "Hello";

System.out.println(str.hashCode()); // 输出哈希码值

3. equals(Object obj)

public boolean equals(Object obj)

作用:比较两个对象是否"相等"。

示例:

String s1 = new String("Hello");

String s2 = new String("Hello");

System.out.println(s1.equals(s2)); // true

4. clone()

protected native Object clone() throws CloneNotSupportedException

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

示例:

class Person implements Cloneable {

String name;

@Override

protected Object clone() throws CloneNotSupportedException {

return super.clone();

}

}

Person p1 = new Person();

p1.name = "Alice";

Person p2 = (Person) p1.clone();

5. toString()

public String toString()

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

示例:

Person person = new Person();

person.name = "Bob";

System.out.println(person.toString()); // 输出类似: Person@1b6d3586

6. notify()

public final native void notify()

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

7. notifyAll()

public final native void notifyAll()

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

8. wait()

public final void wait() throws InterruptedException

public final native void wait(long timeout) throws InterruptedException

public final void wait(long timeout, int nanos) throws InterruptedException

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

9. finalize()

protected void finalize() throws Throwable

注意:此方法在Java 9中已被标记为废弃(deprecated),不建议使用。

作用:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

重要方法详解

equals() 和 hashCode() 的关系

在Java中,equals()和hashCode()方法有重要联系:

如果两个对象根据equals()方法是相等的,那么它们的hashCode()值必须相同反之则不成立 - 哈希码相同的对象不一定相等

示例:

class Employee {

private int id;

private String name;

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

Employee employee = (Employee) o;

return id == employee.id &&

Objects.equals(name, employee.name);

}

@Override

public int hashCode() {

return Objects.hash(id, name);

}

}

clone() 方法的深浅拷贝

clone()方法默认实现的是浅拷贝。如果需要深拷贝,需要重写该方法:

class Department implements Cloneable {

String name;

Employee leader;

@Override

protected Object clone() throws CloneNotSupportedException {

Department cloned = (Department) super.clone();

cloned.leader = (Employee) leader.clone(); // 深拷贝

return cloned;

}

}

总结

Object类提供了Java对象的基本行为,理解这些方法对于编写正确的Java程序至关重要。特别是equals()、hashCode()和toString()方法在实际开发中经常需要重写以满足特定需求。

掌握Object类的方法可以帮助你更好地理解Java的对象模型和基本操作机制。

相关掠夺

beat365网页登录
拼多多宝刀能用几次?怎样砍价才能成功?

拼多多宝刀能用几次?怎样砍价才能成功?

🗓️ 08-05 👁️ 1488
best365官网登陆
赶due是什么意思,赶due和赶ddl是同一个意思吗

赶due是什么意思,赶due和赶ddl是同一个意思吗

🗓️ 08-11 👁️ 4210
beat365网页登录
微博关注怎么置顶

微博关注怎么置顶

🗓️ 07-21 👁️ 7115