Object类:品读API

学了好久Java,却还没仔细研读过Object类,实为遗憾,今日读下,在此记之。

java.lang.Object 即Object类位于java.lang包。

public class Object

        Object类是一切类的根(始祖),即Object类是每个类的超类(父类),所有的类,包括数组都实现了该类中的方法。此类自JDK1.0就有了。

构造对象,只提供了一个空参构造对象(没有重载),去看源码,发现源码中没有给出。这似乎符合Java的规则,Java中构造函数不可以被继承(只是隐式或显式调用),而当某个类没有自定义构造函数时,java会默认添加一个空参构造函数,这应该就是隐式地调用了父类的构造函数。

protected Object clone() 创建并返回此对象的一个副本。

    protected native Object clone() throws CloneNotSupportedException;
boolean equals(object obj) 判断其他对象是否等于当前对象,一般子类都会重写此方法来实现自己的功能。

    public boolean equals(Object obj) {
        return (this == obj);
    }
有一些面试题会问到equals()方法与==有什么不同。

protected void finalize() 被GC(垃圾收集器)调用,当GC发现该对象没有引用时。这个地方,有两个很有趣的地方,一是告诉了我们GC的工作原理,当一个对象不再有引用时,GC就将其回收,二是体现了面向对象的思想,只有对象本身知道自己的情况,外部想要实现功能,就要通过对象来调用。

    protected void finalize() throws Throwable { }

Class<?> getClass(),返回此对象的运行时类。这个方法跟泛型有点关系(<?>),而且返回值类型就是Class。详细Class类介绍请看深入理解Class类

public final native Class<?> getClass();

int hashCode() 返回当前对象的哈希值。equals方法比较就是比较的哈希值,更多hashCode请参考wikipedia之java hashCode

    public native int hashCode();
void notify() 唤醒一个等待当前对象监视器的线程。当某个线程以此对象为锁时,调用notify方法,可将其唤醒,给予其竞争执行权的资格。
    public final native void notify();
void notifyAll() 唤醒所有 等待当前对象监视器的线程,字面意思理解即可。

    public final native void notifyAll();
String toString() 返回该对象的字符串表达式。当我们打印一个对象时,打印的内容即时调用此方法后得到的字符串表达式。

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
它就是返回“类名@hashCode(十六进制)”。
void wait()

void wait(long timeout)

void wait(long timeout, int nanos)

重载了三个不同参数列表的wait()方法,用来使当前线程停下来,直到notify()或者notifyAll()信号发出。


去参照源码,发现还是有些地方API document里面没提到的。


    private static native void registerNatives();
    static {
        registerNatives();
    }

首先声明了一个私有的,静态的,本地的方法,然后调用静态代码块执行,注意本地方法是与平台有关的,与其他编程语言有关的。静态代码块的执行顺序优于构造函数,原因是静态代码块随类加载而执行,构造函数只有实例化对象的时候才开始执行。


还有一个很有趣的地方是,Object类是非abstract类,而Object类是所有类的超类,说明abstract类也继承了Object类,进而说明abstract类可以继承具体类。


希望能做个有心人,从不同角度看问题,发现问题的多维面。







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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值