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)目的是为了解决基本数据类型和相应的对象之间的转换问题。
版权声明:本文为fasfewatgerjhytsjy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。