Object类源码分析

 

前一段时间发的文章都是一些感想之类的,并没有涉及到多少技术的东西。

想了半天该写什么文章好,最后还是想了想写一篇简单的object类源码分析吧。

记得一个视频中的老师提到(大家都看过的,我就不说是哪个视频了),object是java的上帝,所以这个类很关键。

而且面试时曾经问过两个object类的问题,一个是object类有多少个方法,一个是object的equals方法是如何实现的(就在不久前)。

 

 

Object是java.lang包下的一个类,大部分都是native本地方法。自我感觉这个类类似unsafe类,就是与操作系统底层交互的类,不过这个类可以实例化并且调用里面的方法

方法如下:

private static native void registerNatives();

public final native Class<?> getClass();

public native int hashCode();

public boolean equals(Object obj) {
        return (this == obj);
}

protected native Object clone() throws CloneNotSupportedException;

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

 

public final native void notify();

public final native void notifyAll();

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

public final void wait(long timeout, int nanos) throws InterruptedException {
        if (timeout < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
                                "nanosecond timeout value out of range");
        }

        if (nanos > 0) {
            timeout++;
        }

        wait(timeout);
    }

 

public final void wait() throws InterruptedException {
        wait(0);
}

protected void finalize() throws Throwable { }

 

这些方法都经常见,比如wait notify等待唤醒机制大家都再熟悉不过,不过还需要更细心的学,比如wait方法为什么要设计在object类中而不在thread类中,这个问题我也不太明白,希望不会的童鞋们也去研究一下这个问题。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值