ArrayList<Double> list = new ArrayList<>();
list.add(5.5); // 5.5 is automatically converted to new Double(5.5)
list.add(3.0); // 3.0 is automatically converted to new Double(3.0)
Double doubleObject = list.get(0); // No casting is needed
double d = list.get(1); // Automatically converted to double
(Chapter 19.2 的例子)
原生类型和包装类类型指间的自动转换
根据上下文,原生类型可以使用包装类自动转换为对象,反之亦然。.
将原生类型转换为对象称为装箱,逆转换叫做拆箱, Java允许原生类型和包装类型自动进行转换。
编译器在需要对象的上下文中会自动将原生值装箱,在需要原生值的上下文中将对象拆箱,这称为装箱和拆箱。
例如,下列语句:
Integer intObject = new Integer (2);
因为编译器支持自动装箱,所以可以简写为:
Integer intObject = 2;
考虑如下的例子:
1 Integer[] intArray = {1, 2, 3};
2 System.out.println(intArray[0] + intArray[1] + intArray[2]);
第 1 行,原始值 1,2, 和 3 自动装箱成对象:new Integer(1)
,
new Integer(2)
, 和new Integer(3)
。
第 2 行,3个对象 intArray[0]
, intArray[1]
,和 intArray[2]
自动拆箱成对应的值并加到一起,输出 6.
[1] Introduction to Java Programming section 10.8