包裝類共同點

蜡笔小新Belief發表於2024-08-05

.所有包裝類都重寫了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為每個原始資料型別提供了對應的包裝類,這些包裝類具有以下共同點:

  1. 實現Serializable介面:所有的包裝類都實現了java.io.Serializable介面,這意味著它們可以被序列化和反序列化。

  2. 實現Comparable介面:除了Character類之外,所有的包裝類都實現了java.lang.Comparable介面,允許物件進行自然排序。

  3. 提供建構函式:每個包裝類都提供了一個接受相應原始資料型別引數的建構函式,用於建立包裝類例項。

  4. 提供靜態方法valueOf():每個包裝類都有一個靜態方法valueOf(),它接受一個String型別的引數,並將其轉換為相應的原始資料型別。

  5. 提供parse方法:大多數包裝類提供了一個parseXxx()方法,用於將字串解析為原始資料型別,其中Xxx代表原始資料型別的名稱。

  6. 提供toXxxString()方法:每個包裝類都有一個toXxxString()方法,將包裝類物件轉換為String表示形式。

  7. 提供靜態欄位MIN_VALUE和MAX_VALUE:除了BooleanCharacter之外,每個包裝類都有一個靜態欄位MIN_VALUEMAX_VALUE,分別表示該型別的最小值和最大值。

  8. 提供型別轉換方法:包裝類提供了將物件轉換回原始資料型別的靜態方法,如byteValue()intValue()doubleValue()等。

  9. 單例模式:對於BooleanCharacter類,Java使用單例模式,即對於特定的值(如truefalse'\u0000''\uffff'),它們只建立一個例項。

  10. 自動裝箱和拆箱:Java 5 引入了自動裝箱(Autoboxing)和拆箱(Unboxing)機制,允許自動將原始資料型別轉換為對應的包裝類物件,反之亦然。

這些共同點使得Java的包裝類在處理原始資料型別時更加靈活和方便。

相關文章