概要
Object类是所有类的父类,所有对象、数组都实现了此类的方法。
源码
registerNatives():
private static native void registerNatives();
static {
registerNatives();
}
-
native方法:没有方法体,方法的实现是C或C++编写的,简而言就是java中声明的可调用的使用C/C++实现的方法
-
Object类是所有类的父类,是最新初始化的类,在初始化时会执行上面的静态域和方法,registerNatives()用于将java的native方法与C/C++函数关联起来
getclass():
@HotSpotIntrinsicCandidate
public final native Class<?> getClass();
- 返回对象的运行时类,即Class对象
- @HotSpotIntrinsicCandidate注解:Java 9引入的新特性,JDK的源码中,被@HotSpotIntrinsicCandidate标注的方法,在HotSpot中都有一套高效的实现,该高效实现基于CPU指令,运行时,HotSpot维护的高效实现会替代JDK的源码实现,从而获得更高的效率。
- final方法:final修饰的方法不能被子类重写
- final修饰符的其他作用:1. 修饰的类不能被继承 2. 修饰的变量不能被修改:基本类型值不能被修改,引用类型不能指向其他对象(其指向的对象本身可修改)
hashcode():
@HotSpotIntrinsicCandidate
public native int hashCode();
返回对象的hash码,哈希码主要用于哈希表数据结构,例如hashmap
- 在程序执行期间,同一个对象多次调用,必须返回相同的数值,两次不同的程序执行期间不必返回相同的值
- 如果equals方法返回相同,则两个对象必须返回相同的hash值
- 如果equals方法返回不同,两个对象hash值可以是相同的,不同的对象返回不同的hash值可以提高哈希表的性能
equals()
public boolean equals(Object obj) {
return (this == obj);
}
equals方法默认比较对象的引用,即判断是否是同一个对象。如果需要比较对象字段的值需要重写equals方法,同时也必须重写hashcode方法
clone():
@HotSpotIntrinsicCandidate
protected native Object clone() throws CloneNotSupportedException;
网友评论