.所有包裝類都重寫了Object方法
我們也很容易知道Object的方法有
1.1 equals
equals 基本上用於判斷當前物件和引數傳入的物件是否相同,Object類的預設實現是比較地址。對於兩個變數,指向同一個物件地址時,equals才會返回true,與==運算子結果相同。一般這個預設實現是不符合我們需要的比較兩個物件相等,需要子類重寫這個實現。以Long為例,其equals方法程式碼實現如下:
public boolean equals(Object obj){
if(obj instanceof Long){
return value==((Long)obj).longValue();
}
return false;
}
Java中的包裝類(Wrapper Classes)是將原始資料型別(Primitive Data Types)封裝成物件的類。Java為每個原始資料型別提供了對應的包裝類,這些包裝類具有以下共同點:
-
實現Serializable介面:所有的包裝類都實現了
java.io.Serializable
介面,這意味著它們可以被序列化和反序列化。 -
實現Comparable介面:除了
Character
類之外,所有的包裝類都實現了java.lang.Comparable
介面,允許物件進行自然排序。 -
提供建構函式:每個包裝類都提供了一個接受相應原始資料型別引數的建構函式,用於建立包裝類例項。
-
提供靜態方法valueOf():每個包裝類都有一個靜態方法
valueOf()
,它接受一個String型別的引數,並將其轉換為相應的原始資料型別。 -
提供parse方法:大多數包裝類提供了一個
parseXxx()
方法,用於將字串解析為原始資料型別,其中Xxx
代表原始資料型別的名稱。 -
提供toXxxString()方法:每個包裝類都有一個
toXxxString()
方法,將包裝類物件轉換為String表示形式。 -
提供靜態欄位MIN_VALUE和MAX_VALUE:除了
Boolean
和Character
之外,每個包裝類都有一個靜態欄位MIN_VALUE
和MAX_VALUE
,分別表示該型別的最小值和最大值。 -
提供型別轉換方法:包裝類提供了將物件轉換回原始資料型別的靜態方法,如
byteValue()
、intValue()
、doubleValue()
等。 -
單例模式:對於
Boolean
和Character
類,Java使用單例模式,即對於特定的值(如true
和false
,'\u0000'
到'\uffff'
),它們只建立一個例項。 -
自動裝箱和拆箱:Java 5 引入了自動裝箱(Autoboxing)和拆箱(Unboxing)機制,允許自動將原始資料型別轉換為對應的包裝類物件,反之亦然。
這些共同點使得Java的包裝類在處理原始資料型別時更加靈活和方便。