概念:所有类的祖先类/超类/基类,一个类没有明确继承某个父类,均自动继承Object
Object作为祖先类,起着类的标杆的作用
常用方法
方法 | 描述 |
---|---|
equals(Object obj) | 比较两个对象内存地址是否一致 |
hashCode() | 返回该对象的hash码 |
getClass() | 返回该类的字节码文件对象 |
toString() | 返回该对象的字符串表示 |
(一)equals
int a = 20;
int b = 10;
System.out.println(a == b);//false
//object类
Object obj1 = new Object();
Object obj1 = new Object();
System.out.println(obj1 == obj2);//false
System.out.println(obj1.equals(obj2));//false
equals底层逻辑
public boolean equals(Object obj){
return(this == obj)
}
//this -- 调用equals方法的对象
//obj -- 形参
//判断obj1与obj1是否相等
(二)hashCode
hash码是内存地址+散列算法算出来的一个int值,hash码不等于内存地址。
Object obj1 = new Object();
Object obj2 = new Object();
System.out.println(obj1.hashCode());//366712642
System.out.println(obj2.hashCode());//1829164700
(三)getClass
使用到一个类,如果这个类没有加载到方法区时,就会加载。
JVM会将该类的class文件加载到方法区,在堆中创建该类的class文件的对象(简称class对象)。class对象作为该类class文件的访问入口。
//获取Object类的class对象
Class<?extends Object> class1 = obj1.getClass();
Class<?extends Object> class2= obj2.getClass();
System.out.println(class1 == class2);//true
类的class文件只加载一次,所以该类的class对象只有一个
(四) toString
在Object中打印对象,默认调用toString(),获取该对象的字符串表示。
//object类
Object obj1 = new Object();
Object obj2 = new Object();
System.out.println(obj1);//java.lang.Object@15db9742
System.out.println(obj2.toString());//java.lang.Object@6d06d69c