在 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());
}
该方法为以字符串形式表示字符串,默认展示类的内存地址(伪地址)