1. 程式人生 > >java之裝箱拆箱

java之裝箱拆箱

img 類類型 需要 子類 ble package static ger 編譯錯誤

參考http://how2j.cn/k/number-string/number-string-wrap/22.html

封裝類

所有的基本類型,都有對應的類類型
比如int對應的類是Integer
這種類就叫做封裝類

package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {
        int i = 5;
         
        //把一個基本類型的變量,轉換為Integer對象
        Integer it = new Integer(i);
        
//把一個Integer對象,轉換為一個基本類型的int int i2 = it.intValue(); } }

Number類

數字封裝類有
Byte,Short,Integer,Long,Float,Double
這些類都是抽象類Number的子類

技術分享圖片

package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {
        int i = 5;
         
        Integer it = new Integer(i);
        
//Integer是Number的子類,所以打印true System.out.println(it instanceof Number); } }

基本類型轉封裝類

package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {
        int i = 5;
 
        //基本類型轉換成封裝類型
        Integer it = new Integer(i);
         
    }
}

封裝類轉基本類型

package digit;
 
public class TestNumber { public static void main(String[] args) { int i = 5; //基本類型轉換成封裝類型 Integer it = new Integer(i); //封裝類型轉換成基本類型 int i2 = it.intValue(); } }

自動裝箱

不需要調用構造方法,通過=符號自動把 基本類型 轉換為 類類型 就叫裝箱

package digit;
 
public class TestNumber {
 
    public static void main(String[] args) {
        int i = 5;
 
        //基本類型轉換成封裝類型
        Integer it = new Integer(i);
         
        //自動轉換就叫裝箱
        Integer it2 = i;
         
    }
}

自動拆箱

不需要調用Integer的intValue方法,通過=就自動轉換成int類型,就叫拆箱

package digit;
  
public class TestNumber {
  
    public static void main(String[] args) {
        int i = 5;
  
        Integer it = new Integer(i);
          
        //封裝類型轉換成基本類型
        int i2 = it.intValue();
         
        //自動轉換就叫拆箱
        int i3 = it;
          
    }
}

int的最大值,最小值

int的最大值可以通過其對應的封裝類Integer.MAX_VALUE獲取

應該是自動裝箱必須一一匹配

但是拆箱,只要拆出來的基本類型,其範圍小於左側基本類型的取值範圍,就可以。

比如:

 Byte b = 5;

Short s = 5;

Integer i = 5; Long l = 5l;

long x;

x= b;

x=s;

x=i;

x=l; 

右邊是類類型,左邊的x是long基本類型,那麽也可以自動拆箱

以x=b為例,b自動拆箱出來時byte基本類型,byte的取值範圍小於long,那麽就不會出現編譯錯誤。

java之裝箱拆箱