Object 有哪些常用方法?

Object 类是 Java 中的一个基本类型,它是所有其他类的父类。Object 类中有许多常用的方法,下面列出一些常用的方法以及其含义:

  1. toString():返回对象的字符串表示形式。
  2. equals(Object obj):比较两个对象是否相等。
  3. hashCode():返回对象的哈希码,用于哈希表等数据结构。
  4. getClass():返回对象的类。
  5. clone():返回对象的克隆,用于创建对象的副本。
  6. notify():唤醒通知线程。
  7. notifyAll():唤醒所有通知线程。
  8. wait():等待一个通知线程。
  9. wait(long timeout):等待一个通知线程,并设置超时时间。
  10. notify():唤醒一个通知线程。
  11. notifyAll():唤醒所有通知线程。
  12. broadcast():向一组通知对象广播信号。
  13. filter(Predicate predicate):根据条件过滤集合。
  14. find(Object target):在集合中查找一个对象,如果找到则返回对象本身,否则返回 null。
  15. findAll():在集合中查找所有对象,如果找到则返回一个数组,否则返回空数组。
  16. collect(BiFunction<? super K,? super V,? extends V> function):根据函数对集合中的元素进行转换。
  17. sort(Comparator<? super V> c):对集合进行排序。
  18. count():返回集合中元素的数量。
  19. toArray():将集合转换为一个数组。
  20. size():返回集合的大小。

这些方法是 Object 类中常用的,其中大部分方法都用于对象的操作和管理。理解这些方法的含义和使用方式对于更好地使用 Java 类型系统和开发高效的代码非常重要。

Object相关的面试题:

给出 toString() 方法的实现。

public String toString() {  
    return getClass().getName() + "@" + Integer.toHexString(hashCode());  
}

实现 equals() 方法,比较两个对象是否相等。

public boolean equals(Object obj) {  
    if (obj == this) {  
        return true;  
    }  
    if (!(obj instanceof Object)) {  
        return false;  
    }  
    final Object that = (Object) obj;  
    if (this.field1 != that.field1) {  
        return false;  
    }  
    return true;  
}

实现 hashCode() 方法,返回对象的哈希码。

public int hashCode() {  
    return Objects.hash(field1, field2);  
}

实现 getClass() 方法,返回对象的类。

public Class<?> getClass() {  
    return getClass().getSimpleName();  
}

实现 clone() 方法,返回对象的克隆。

public Object clone() {  
    try {  
        return super.clone();  
    } catch (CloneNotSupportedException e) {  
        throw new RuntimeException(e);  
    }  
}

实现 notify() 方法,唤醒通知线程。

public void notify() {  
    notifyAll();  
}

<think>好的,我现在需要帮助用户总结Object的作用及其常用方法。首先,我得回忆一下JavaObject的基础知识。Object是所有的父,所以每个都直接或间接继承自它。这意味着Object中的方法对所有对象都可用,除非被重写。接下来,用户想要知道Object的作用。根据引用资料,比如引用[3]提到Object层次结构的根,没有显式继承的默认继承Object。所以作用之一是作为所有的基,提供通用方法。另外,引用[4]提到Object可以接受任何型的参数,这也是一个点。然后常用方法部分,需要列举主要的方法并简要说明。根据引用[1],常见方法包括equals、hashCode、toString、clone、finalize、wait、notify、notifyAll、getClass。需要逐个解释它们的作用。比如equals方法,引用[4]和[5]都提到默认是比较对象地址,通常需要重写。hashCode返回对象的哈希码,与equals相关。toString默认返回名和哈希值,常被重写。clone用于对象复制,需要实现Cloneable接口。finalize与垃圾回收相关,但已过时。多线程相关的方法wait和notify用于同步。getClass返回对象的运行时。 要注意引用中的不同解释,比如引用[2]提到finalize很少使用,引用[3]将方法按用途分。需要将这些信息整合,用清晰的中文表达,避免技术术语过于复杂。同时,按照用户要求,行内数学公式用$...$,但这里可能不涉及数学公式,所以可能不需要。但如果有例子中的代码,要用正确格式。另外,用户要求生成相关问题,需要根据内容提出相关问题,比如Object中的方法哪些需要重写,equals和==的区别,finalize方法的问题等。需要参考引用中的内容,比如引用[5]讨论了==的区别,引用[4]提到重写equals的必要性。 最后,确保回答结构清晰,分点说明作用和方法,每个方法的作用和注意事项,可能的话给出示例代码。引用标识要自然添加在相关段落末尾,如引用[3]提到方法,引用[4]讨论equals和Objects工具的区别。 现在需要检查是否有遗漏的方法或者作用,确保覆盖所有重要点,比如Object的构造方法,虽然可能不重要,但引用[3]提到构造函数,但可能用户更关注常用方法。另外,注意引用中的信息是否有冲突,比如不同引用对方法数量的说法,引用[3]说有12个成员方法,而引用[4]提到13个方法,可能需要核实,但用户可能不需要具体数字,所以可以模糊处理。总结下来,回答的结构大致是:作用分几点,常用方法分点详细说明,每个方法的作用、默认行为、重写情况,注意事项,然后相关问题部分。确保引用正确,比如引用[4]在讨论equals时,引用[5]在比较==时。</think>### Object的作用及常用方法总结 #### 一、Object的作用 1. **基作用** Java中所有默认继承Object(未显式继承其他时),因此它是层次结构的根[^3][^4]。 2. **通用方法提供** 定义了一系列所有对象共用的方法(如`equals`、`hashCode`、`toString`),为多态和对象操作提供基础[^1][^3]。 3. **多线程支持** 包含线程同步相关方法(`wait`、`notify`、`notifyAll`),用于协调线程间通信[^3][^5]。 4. **对象操作扩展** 提供对象克隆(`clone`)、垃圾回收前清理(`finalize`)等功能[^3][^4]。 --- #### 二、常用方法详解 1. **`equals(Object obj)`** - **作用**:比较对象内容是否相等(默认比较对象地址,需重写以实现内容比较)[^4][^5]。 - **示例**: ```java public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; MyClass other = (MyClass) obj; return this.field == other.field; } ``` 2. **`hashCode()`** - **作用**:返回对象的哈希码,需与`equals`方法逻辑一致(若重写`equals`,必须重写`hashCode`)[^3][^4]。 3. **`toString()`** - **作用**:返回对象的字符串表示(默认格式:`名@哈希值`,常被重写以输出有意义信息)[^2][^3]。 - **示例**: ```java public String toString() { return "User{name='" + name + "', age=" + age + "}"; } ``` 4. **`clone()`** - **作用**:创建并返回对象的副本(需实现`Cloneable`接口,否则抛出`CloneNotSupportedException`)[^3][^4]。 5. **`getClass()`** - **作用**:返回对象的运行时(如`MyClass.class`),常用于反射操作[^2][^3]。 6. **多线程方法** - **`wait()`/`notify()`/`notifyAll()`**:用于线程间通信,需在同步代码块中调用[^3][^5]。 7. **`finalize()`** - **作用**:在对象被垃圾回收前调用(已过时,不推荐使用)[^2][^3]。 --- #### 三、注意事项 - **`equals`与`==`的区别**: `==`比较基本型的值或引用型的地址,`equals`默认行为与`==`相同,但可重写为内容比较[^4][^5]。 - **工具`Objects`**: JDK 1.7引入的`Objects.equals(a, b)`可避免空指针异常,比直接调用`a.equals(b)`更安全[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农落落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值