1.Java.lang包之Object类

Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。

Object类没有定义属性,一共有13个方法,具体的类定义结构如下图:

1.private static native void registerNatives()

        registerNatives函数前面有native关键字修饰,Java中,用native关键字修饰的函数表明该方法的实现并不是在Java中去完成,而是由C/C++去完成,并被编译成了.dll,由Java去调用。方法的具体实现体在dll文件中,对于不同平台,其具体实现应该有所不同。用native修饰,即表示操作系统,需要提供此方法,Java本身需要使用。具体到registerNatives()方法本身,其主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。

2.public final native Class<?> getClass()

        getClass函数前面有native关键字修饰,Java中,用native关键字修饰的函数表明该方法的实现并不是在Java中去完成,而是由C/C++去完成,并被编译成了.dll,由Java去调用。返回这个运行类。

3.public native int hashCode()

        getClass函数前面有native关键字修饰,Java中,用native关键字修饰的函数表明该方法的实现并不是在Java中去完成,而是由C/C++去完成,并被编译成了.dll,由Java去调用。返回这个类的哈希码。实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)

4.public boolean equals(Object obj)

        指示其他某个对象是否与此对象“相等”。默认比较地址是非相等。建议所有方法中都要重写此方法。

        每个类,在内存中的字节码是一样的,每个对象是类的实例。

5.protected native Object clone()

      clone函数前面有native关键字修饰,Java中,用native关键字修饰的函数表明该方法的实现并不是在Java中去完成,而是由C/C++去完成,并被编译成了.dll,由Java去调用。创建并返回次对象副本。

      clone函数属于浅度克隆,如Student对象想要在其他类中被克隆,其必须实现Cloneable接口(内无实现方法,属于标记接口)并重写Objec类的clone方法(否者在其他类中无法调用clone方法)。

6.public String toString()

        返回该对象的字符串表示。getClass().getName() + "@" + Integer.toHexString(hashCode())。

 

posted @ 2018-07-31 11:45  小情绪Ango  阅读(209)  评论(0编辑  收藏  举报