自动装箱 拆箱

参考 java自动拆箱装箱

定义:编译器自动对基础数据类型和其包装类进行转化,这种转化对程序员是透明的。
装箱:调用包装类的 valueOf()方法
拆箱:调用包装类的.***Value()方法

主要应用在以下方面
进行 = 赋值操作(装箱或拆箱)
进行+,-,*,/混合运算 (拆箱)
进行>,<,==比较运算(拆箱)
调用equals进行比较(装箱)
ArrayList,HashMap等集合类 添加基础类型数据时(装箱)

数据对比

1 int a = 100; Integer b = 100; sout(a == b);
2 Integer a = 100; Integer b = 100; sout(a == b);
3Integer a = 200; Integer b = 200; sout(a == b);

结果
1 true 自动拆箱
2 true
3 false
原因,看代码

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
}

为什么要有基本数据类型的包装类

1 基本数据类型可以让程序更高效
2 java是面向对象编程的,基本数据类型并不是对象,不具有对象的性质。添加包装类,可以封装属性和方法,就有对象的特性。
3 容器里不能添加基本数据类型。如List, Map, Set

基本数据类型和其包装类

boolean, byte, char, float, int, long, short, double
Boolean, Byte, Character, Float, Integer, Long, Short, Double

你可能感兴趣的:(自动装箱 拆箱)