一文掌握 Object 类里的所有方法(wait、notify、finalize)

如题所述

第1个回答  2024-08-12
Object 类是 Java 中所有类的父类,包含了若干方法,所有类都将继承这些方法。因此,掌握这个类的方法是非常必要的。

Object 类位于 java.base 模块下的 java.lang.Object,其中 wait0 是私有方法,不用管。这些方法分为两类:常用方法和线程相关方法。以下是具体说明。

常用方法包括:getClass()、hashCode()、equals(Object)、clone() 和 toString()。

1. getClass() 方法返回这个类对应的 Class 对象,是 Java 反射中最重要的一个类。

2. hashCode() 方法返回这个对象的哈希值,默认情况下,Object 是返回对象在堆内存中的地址。

3. equals(Object) 方法用于判断当前对象是否与传入的 obj 对象相等。在 Object 中,就是使用 == 来进行判断,但子类常常需要覆写此方法。

4. clone() 方法返回当前对象的一个浅拷贝,只有实现了 Cloneable 接口才可以调用该方法。

5. toString() 方法用于返回对象信息,一般子类都会覆写。

线程相关方法包括:wait()、wait(long)、wait(long, int)、notify() 和 notifyAll()。

1. wait() 方法让线程等待,但与 sleep 不同,如果直接在线程中的调用,会出现 java.lang.IllegalMonitorStateException 异常。

2. wait(long) 方法限定了等待时间,超过了这个时间,线程会自己唤醒自己。

3. wait(long, int) 方法与 wait(long timeout) 方法类似,只是多了一个 nanos 参数。

4. notify() 方法用于唤醒 WaitSet 中的线程,使其进入 EntrySet。

5. notifyAll() 方法唤醒所有等待中的线程。

最后,我们来说一下 finalize() 方法。这个方法在对象被 GC 回收之前调用,一般覆写这个方法完成这个对象的清理工作。

通过这篇文章,大家应该对Object 类中的方法有所了解,常用的5个方法较为简单。主要是与线程相关的方法,这才是 Object 类的重头戏。最后文章讲解了一下 finalize 方法,作为一个被废弃的方法,我们了解了它的使用方法,后续需要用 Cleaner 等方法替代。

一文掌握 Object 类里的所有方法(wait、notify、finalize)
常用方法包括:getClass()、hashCode()、equals(Object)、clone() 和 toString()。1. getClass() 方法返回这个类对应的 Class 对象,是 Java 反射中最重要的一个类。2. hashCode() 方法返回这个对象的哈希值,默认情况下,Object 是返回对象在堆内存中的地址。3. equals(Object) 方法用于判断当前对...

java中object类中有哪些方法
(2)getClass方法 final方法,获得运行时类型。(3)toString方法 该方法用得比较多,一般子类都有覆盖。(4)finalize方法 该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。(5)equals方法 该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类...

JAVA中Object类中 有几个方法
protected void finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。Class<?> getClass()返回此 Object 的运行时类。int hashCode()返回该对象的哈希码值。void notify()唤醒在此对象监视器上等待的单个线程。void notifyAll()唤醒在此对象监视器上...

Object 对象的方法有哪些?分别有什么作用?该什么场景用?
wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。调用该方法后当前线程进入睡眠状态,直到以下事件发生。(1)其他线程调用了该对象的no...

2020-09-10:java里Object类有哪些方法?
Java Object类是所有类的父类,主要方法有:getClass():获取运行时类型,返回值为Class对象 2.hashCode():返回该对象的哈希码值,是为了提高哈希表的性能(HashTable)3.equals():判断两个对象是否相等,在Object源码中equals就是使用==去判断,所以在Object中equals是等价于==的,但是在String及...

Day 13 Object,字符串,BigDecimal,时间相关
当对象被系统回收时,`finalize()`方法将被调用,由系统执行。`toString()`方法将对象转换为字符串,使用对象所属的包名、类名加上对象的哈希码值的十六进制字符串。在反射、线程间通讯中涉及`getClass`、`notify`、`notifyAll`、`wait`方法的使用,这些方法在Object类中暂时未详细讲解。字符串类型分...

object是什么意思
finalize():当对象不再被引用时,垃圾回收器会调用此方法,执行清理工作。 getClass():返回对象的实际运行时类。 hashCode():计算并返回对象的哈希码,用于快速查找。 notify():唤醒一个在此对象监视器上等待的单个线程。 notifyAll():唤醒所有在此对象监视器上等待的线程。 toString():...

objectObject是什么意思
finalize()当垃圾回收器确定不存在对该对象的更多引用时,对象的垃圾回收器调用该方法。getClass()返回一个对象的运行时间类。hashCode()返回该对象的散列码值。notify()激活等待在该对象的监视器上的一个线程。notifyAll()激活等待在该对象的监视器上的全部线程。toString()返回该对象的字符串表示。wait...

我后天要去三星SDS做JAVA笔试题,请问有哪个高人去过,有笔试和面试题的...
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 14、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 方法的重写Overriding和重载Overloading是Java多态性...

object 是什么类型
Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类,可以使用类型为Object的变量指向任意类型的对象。Object类有一个默认构造方法pubilc Object(),在构造子类实例时,都会先调用这个默认...

相似回答
大家正在搜