JAVA源码阅读之----Object (1)

在 Object 源码中

方法一: registerNatives();
第一行有一个 native修饰的没有大括号的方法.
这里native表示该方法的实现不在本文件中,而是由其它语言(例如C,C++)编写实现的.

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

注意,上面代码中此方法为静态私有方法,通过类的静态代码块执行.为JAVA程序最开始执行的方法,且程序运行期间只会执行一次的方法.

方法二:getClass();

public final native Class<?> getClass();

结合第一个方法所讲,该方法也是由其它语言编写实现的,为获得类的字节码文件方法.

方法三:hashCode();

  public native int hashCode();

该方法用一个32位整数来代表该类位于内存中的位置(非真实地址).子类均可以进行重写.该方法的主要作用是判断两个对象是否一致.

方法四:equals(Object obj);

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

该方法用来判断两个对象是否一致,JAVA中默认是比较两个对象的地址是否相同.子类若需要使用建议覆盖equals与hashCode方法.JAVA中所有对象比较是否相同均建议使用equal,否则可能造成意想不到的错误.例如Integer对象不建议使用==进行判断.

方法:clone();

protected native Object clone() throws CloneNotSupportedException;

该方法作用克隆该类.子类如需使用建议覆盖.且该克隆应该为深度复制而非浅复制

方法:toString();

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

该方法为以字符串形式表示字符串,默认展示类的内存地址(伪地址)

猜你喜欢

转载自blog.csdn.net/qq_27515289/article/details/80169773