Java源代码阅读——Object类

本文详细介绍了Java中Object类的功能及其实现,包括其构造方法、核心方法如equals、hashCode等的作用与实现原理,以及如何正确地重写这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 概述

Object是类层次结构的根类。每个类都使用object作为超类。所有对象(包括数组)都实现这个类的方法。

二 构造方法

Object();

三 方法

(1)

private static native void registerNatives();
    static {
        registerNatives();
    }
本地方法,static表示该类再初始化时执行该代码块,完成本地注册。

(2) 

public final native Class<?> getClass();

本地方法,返回此 Object 的运行时类。

(3)

public native int hashCode();

本地方法,针对不同的对象返回不同的整数,一般是通过将该对象的内部地址转换成一个整数来实现的。

(4)

public boolean equals(Object obj) {
        return (this == obj);
    }
自反性,传递性,对称性,一致性, 非空引用值 x x.equals(null) 应返回  false 。、

(5)

protected native Object clone() throws CloneNotSupportedException;

本地方法,Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。

(6)

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

public final native void notify();

本地方法,唤醒在此对象监视器上等待的单个线程。如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。选择是任意性的,并在对实现做出决定时发生。

(8)

public final native void notifyAll();

本地方法,唤醒在此对象监视器上等待的所有线程。线程通过调用其中一个 wait 方法,在对象的监视器上等待。

(9)

public final native void wait(long timeout) throws InterruptedException;

在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。

另有其他两个重载形式。

(10)

protected void finalize() throws Throwable { }

当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写 finalize 方法,以配置系统资源或执行其他清除。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值