1.类构造器
是创建Java对象的途径之一,通过new 关键字调用构造器完成对象的实例化,或通过构造器对象进行相对应的初始化。在JDK的Object类源码中,系统会自动添加一个无参构造器。
public Object(){
Object obj = new Object();//构造一个Object类的对象
}
2.registerNatives 方法
private static native void registerNatives();
static{
registerNatives();
}
静态代码块是一个类在初始化过程中必定会执行的内容,所以在类加载时会执行该方法,通过该方法来注册本地方法。
3.getClass 方法
public final native Class<?> getClass();
首先,该方法由final 声明本地方法,不能被重写,作用是返回运行时类对象,通过这个类对象可以获取该运行时类的相关属性和方法。
class是一个类的属性,能获取该类编译时的类对象;而getClass()是一个类的方法,它是获取该类运行时的类对象。
4.hashCode 方法
public native int hashCode()
这是一个由native声明的本地方法,作用是返回对象的哈希码(是int类型的数值)。
哈希算法也称为散列算法,是将数据依据特定算法产生的结果直接指定到一个地址上,这个结果就是由hashCode方法产生的。当集合要添加新元素时,会先调用这个元素的hashCode方法,就能定位到它应放置的物理位置上。
1)如果这个位置上没有元素,就直接存储在这个位置上,不用再进行任何比较;
2)如果这个位置上已经有元素,就调用它的equals方法与新元素进行比较,相同的话就不存;不同的话(也就是产生了hash冲突),那么就在这个key的位置产生一个链表,将所有hashCode相同的对象存放在这个单链表上。
如果两个对象的equals值比较相等,那么它们的hashCode值一定相等;如果两个对象的equals值吧比较不相等,那么他们的hashCode值可能相等,也可能不相等。
5.equals 方法
public boolean equals(Object obj){
return (this == obj);
}
1)Object中的equals 方法比较的是对象的地址是否相同;equals方法可以被重写,重写后equals方法比较的是两个对象值是否相同。
2)在Java规范中,对equals方法的使用必须遵循以下几个规则:
自反性:对于任何非空引用值X,X.equals(X)都应返回true;
对称性:对于任何非空引用值X和Y,当且仅当Y.equals(X)返回true时,X.equals(Y)也应该返回true;
传递性:对于任何非空引用值X,Y,Z,如果X.equals(Y)返回true,并且Y.equals(Z)返回true,那么X.equals(Z)应返回true;
一致性:对于任何非空引用值X和Y,多次调用X.equals(Y)始终返回true或者始终返回false。
标签:Java,对象,true,Object,equals,hashCode,类有,方法 From: https://www.cnblogs.com/w852894903/p/18174742