Object類
所有引用類型的頂級父類,任何一個類都會直接或者間接的繼承它。當使用class關鍵聲明一個類,而未使用extends繼承任何類時,默認繼承Object類的。
Object類中常用方法的源碼
/*
作用:獲得對象的hashCode值
在現階段可以簡單理解該方法獲得的就是對象在內存中的地址
*/
public native int hashCode();
/*
作用:比較兩個對象是否是同一個對象
從源碼可以看到,方法內部是使用雙等號==判斷的。
使用雙等號判斷兩個對象時,本質就是在比較兩個對象的hashCode值是否相等
*/
public boolean equals(Object obj) {
return (this == obj);
}
/*
作用:將對象轉換成一個字符串
getClass().getName():獲取類的全名(含包名)
Integer.toHexString(hashCode()):將hashCode()返回的int值轉換成十六進制
*/
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
實例:
package common_class;
/**
* 演示Object類
* @author 學霸聯盟 - 趙燦
*/
public class ObjectDemo {
public static void main(String[] args) {
//創建兩個Object類的對象
Object obj1 = new Object();
Object obj2 = new Object();
//輸出obj1的hashCode值;輸出結果:1704856573
System.out.println(obj1.hashCode());
//輸出toString方法的返回值;輸出結果:java.lang.Object@659e0bfd
System.out.println(obj1.toString());
//輸出obj2十六進制的hashCode值;輸出結果:2a139a55
System.out.println(Integer.toHexString(obj2.hashCode()));
//和輸出obj2.toString()一樣;輸出結果:java.lang.Object@2a139a55
System.out.println(obj2);
}
}
輸出結果:
1704856573
java.lang.Object@659e0bfd
2a139a55
java.lang.Object@2a139a55