1 實例
(1)演示基本拆裝箱操作的程序AutoUnbox.java
public class AutoUnbox {
public static void main(String[] args){
Integer data11=new Integer(10);//int類型轉換爲對象
Integer data12=new Integer(10);
Integer data21=Integer.valueOf(10);//int類型轉換成對象
Integer data22=Integer.valueOf(10);
Integer data31=20;//自動裝箱方式實現int轉換成對象
Integer data32=20;
int sum1=data11+20;//自動拆箱實現對象轉換成int
int sum2=data31+20;
//輸出sum1和sum2
System.out.println("sum1的值是"+sum1);
System.out.println("sum2的值是"+sum2);
//查看是否引用同一對象
System.out.println("data11和data12是否是同一對象"+(data11==data12));
System.out.println("data21和data22是否是同一對象"+(data21==data22));
System.out.println("data31和data32是否是同一對象"+(data31==data32));
}
}
運行結果:
sum1的值是30
sum2的值是40
data11和data12是否是同一對象false
data21和data22是否是同一對象true
data31和data32是否是同一對象true
(2)修改AutoUnbox.java類中數值大小
NumberTest.java
public class NumberTest {
public static void main(String[] args){
//int類型轉換爲對象
Integer data21=Integer.valueOf(127);
Integer data22=Integer.valueOf(127);
Integer data211=Integer.valueOf(128);
Integer data221=Integer.valueOf(128);
//創建Integer類型對象
Integer data31=-128;
Integer data32=-128;
Integer data311=-129;
Integer data321=-129;
//查看是否引用同一對象
System.out.println("data21和data22是否是同一對象"+(data21==data22));
System.out.println("data211和data221是否是同一對象"+(data211==data221));
System.out.println("data31和data32是否是同一對象"+(data31==data32));
System.out.println("data31和data32是否是同一對象"+(data311==data321));
}
}
運行結果:
data21和data22是否是同一對象true
data211和data221是否是同一對象false
data31和data32是否是同一對象true
data31和data32是否是同一對象false
2 實例說明
(1)AutoUnbox.java中將int基本數據類型轉換爲Integer對象可以通過三種方式實現:新建Integer類(new Integer())、Integer類的valueOf方法(Integer.valueOf())和自動裝箱操作(Integer data31=20);
(2)int sum1=data11+20實現對象data11與基本數據類型int類型20相加。首先將對象data11自動轉換成int即所謂的拆箱操作,然後才能實現與20相加。
(3)AutoUnbox.java中對象data11與data12之所以不是引用同一個對象時因爲這兩個對象都是通過new來創建。但是data21與data22是通過Integer.valueOf()方法返回同一個數值的引用。data31和data32通過自動裝箱操作返回同一個數值的引用。
(4)NumberTest.java中演示瞭如果數值介於基本數據類型之間,則相應對象會引用同一個類型;否則相反。如int範圍-128~127,超出則在Integer裝箱時候就不會引用同一個對象。
3 基本數據的拆、裝箱操作說明
(1)目的是爲了解決基本數據類型和相應的對象之間的轉換問題。