8种基本数据类型及对应的包装类
基本数据类型 | 包装类 |
---|
byte | Byte | short | Short | int | Integer | long | Long | float | Float | double | Double | char | Character | boolean | Boolean |
????????拆箱与装箱是相反的操作。装箱是将一个原始数据类型赋值给相应封装类的变量。而拆箱则是将一个封装类的变量赋值给相应原始数据类型的变量。
自动装箱
大家在平时编写Java程序时,都常常以以下方式来定义一个Integer对象:
Integer i=100;
Integer i=new Integer (100);
从上面的代码中,大家可以得知,i为一个Integer类型的引用,100为Java中的基础数据类型。而这种直接将一个基础数据类型传给其相应的封装类的做法,便是自动装箱。
自动拆箱
int n = i;
int n = i.intValue();
将一个封装类转换为基础数据类型,是拆箱。
128陷阱
Integer和int进行比较
Integer a?= 10;
int? b = 10;
System.out.println(a?== b);? ?//true
int 和 Integer在进行比较的时候,Integer会进行拆箱,转为int值与int进行比较
Integer和Integer进行比较
Integer a?= 128;
Integer b = 128;
System.out.println(a?== b);? ? //false
a自动装箱产生的Integer对象,大小超过了-128——127的范围,这里会直接创建该对象:new Integer(128)
b同理。它们在堆中的地址是不同的,因此false.
Integer a?= 128;
Integer b = 128;
System.out.println(a.equals(b));? ?//true
|