天天看點

基本資料類型與其包裝類的類型轉換一、Integer和int的類型轉換二、自動裝箱、自動拆箱介紹三、自動裝箱、自動拆箱應用

文章目錄

  • 一、Integer和int的類型轉換
    • 5.1 int轉為Integer:valueOf()
    • 5.2 Integer轉為int:intValue()
  • 二、自動裝箱、自動拆箱介紹
  • 三、自動裝箱、自動拆箱應用

一、Integer和int的類型轉換

【注: java中的自動拆箱、自動裝箱機制會對基本類型和它們對應的包裝類進行自動轉換,是以不需要刻意人為去轉換。這是隻是介紹一下以下的兩種方法】

5.1 int轉為Integer:valueOf()

valueOf()中的參數也可以為String,但同樣的,也必須為純數字。

5.2 Integer轉為int:intValue()

Integer a1 = 100;
int a2 = a1.intValue();
           

intValue()是java.lang.Number類的方法,Number是一個抽象類, Java中所有的數值類都繼承它。也就是說,不單是Integer有intValue方法,Double,Long等都有此方法。

此方法的意思是:輸出int資料。

二、自動裝箱、自動拆箱介紹

  • 概念: 自動裝箱指的是基本資料類型指派給其對應的包裝類引用類型時,基本資料類型會自動裝箱為引用類型;自動拆箱指的是包裝類引用類型自動拆箱為對應的數值類型。
  • 發生場所: 指派、比較。
  • 代碼應用:
public void Integer_int() {
		int a0 = 10;
		int a1 = 10;
		Integer n1 = 10; //指派時自動裝箱,将數值10封裝為對象
		Integer n2 = 10;
		Integer n3 = new Integer(10);
		Integer n4 = new Integer(10);
		Integer n5 = 199;
		Integer n6 = 199;
		
		System.out.println(a0 == a1); //true 比較值
		System.out.println(a0 == n1); //true 引用和數值比較時,引用自動拆箱為數值,進行數值之間的比較
		System.out.println(a0 == n3); //true n3自動拆箱後數值為10
		System.out.println(n1 == n2); //true 10在常量池存在,n1、n2指向同一個位址
		System.out.println(n1 == n3); //false new的
		System.out.println(n3 == n4); //fasle new的
		System.out.println(n5 == n6); //fasle 超出常量池範圍,直接new新的對象
}
           

三、自動裝箱、自動拆箱應用

public void testbyte() {
		Byte a = 123; // 自動裝箱,将123自動裝箱為引用類型,指派給a
		Byte c = a; // a、c同為引用類型,指向同一個堆的值
		System.out.println(c == a); // true c、a同為引用,比較的是兩個引用的位址
		a++;
		// 相當于:
		// byte a = 123; 拆箱:将a這個引用類型拆箱為byte基本資料
		// a++; a自身加1(++本身相當于指派)
		// Byte a1 = a; 裝箱:此時a為byte,需要将其裝箱為Byte類型
		System.out.println(c == a); // 比較位址,但是a的指向已改變
	}
           

輸出

true
false
           
自動拆箱相當于把123對象中的數值123取出來複制給基本資料類型變量上的過程,是以c還是指向原來的123對象。