1. 程式人生 > >Java SE-基本數據類型對應包裝類

Java SE-基本數據類型對應包裝類

block sys 錯誤 tex static for語句 語言 自動裝箱 情況

包裝類

Java是面向對象的編程語言,包裝類的出現更好的體現這一思想。

其次,包裝類作為類是有屬性有方法的,功能比基本數據類型要強大。

八種基本數據類型的包裝類
  byte ——Byte   short ——Short   int ——Integer   long——Long   float——Float   double——Double   char——Character   boolean——Boolean

裝箱與拆箱

裝箱是指由基本數據類型向對應的包裝類型轉換。例如,int包裝成Integer類的對象。
拆箱是指有包裝類轉換成基本數據類型。例如,把Integer類的對象簡化成int。

【基本數據類型變成對象包裝類的好處】
  可以將基本數據和字符串之間進行互相的轉換。   如:int類型的取值範圍是多少? 這就應該去查 Integer —— Integer.MAX_VALUE ;
  基本數據類型包裝類的主要作用: 進行基本數據類型和字符串之間的轉換 【基本類型數據 轉為 字符串 的三種方式】
1. 基本數據類型對象包裝類中的方法 static String toString(基本類型);
2. String類中的方法: static String valueOf(基本類型)
3. 基本類型數據 +“ ”;
重點要掌握的就是:
  字符串---->基本類型數據。   返回值類型——>基本類型 ;參數——>字符串。   基本數據類型 變量名 = 基本數據類型包裝類.parseXxx(XxxString);   Long l = Long.parseLong("4546545646546");
  System.out.println(Integer.parseInt("23") + 1);
  在八個基本類型對象包裝類中只有一個對象沒有parse方法,就是Character.
【類型轉換錯誤】   NumberFormatException——數字格式異常——我碰到了,因為我多加了一個空格。 【Integer中要掌握的方法】涉及到一個進制轉換的問題。
十進制-->其他進制。 二進制:static String toBinaryString(int); 16進制:static String toHexString(int); 八進制:static String toOctalString(int); 其他進制——>轉成十進制; Integer.toString(6 , 2); 將6轉換為二進制。
parseInt(intString , radix); System.out.println(Integer.parseInt("110") , 2);
【基本類型優於包裝類型,註意合理使用包裝類型】

  說明:Java有兩種類型,基本類型(Primitive type)和引用類型(Reference type)。基本類型如boolean,int, double,引用類型如String,List。每一種基本類型都有其對應的包裝類型(Wrapper classes),如對應int的是Integer。

  很多情況下基本類型優於裝箱基本類型,因為:

  1、在JDK 1.5以及之後的版本中增加了自動裝箱和拆箱的特性。但是,不恰當的並行使用基本類型和包裝類型,可能帶來大量隱含的裝箱和拆箱的操作。如下面的for語句中,由於循環變量是基本類型,而sum是包裝類型,會導致頻繁的自動裝箱和拆箱操作,導致性能下降。

Long sum = 0L; 
for (long i=0; i<Integer.MAX_VALUE; i++){
  sum += i;
}
System.out.println(sum);

  2、對於包裝類型,使用“==”比較可能無法得到預期的結果。如:new Integer(42) ==new Integer(42) 將返回false。應該使用equals方法做裝箱類型的比較。

  使用包裝類型合理的場景有:

1、作為集合中的元素、鍵和值

2、泛型,必須使用包裝類型,如List<Integer>

3、進行反射的方法調用時

Java SE-基本數據類型對應包裝類