JAVA自动装箱 拆箱

发布时间:2024年01月21日

定义:编译器自动对基础数据类型和其包装类进行转化,这种转化对程序员是透明的。
装箱:调用包装类的 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

具体可参考5分钟彻底理解-Java自动装箱、拆箱

文章来源:https://blog.csdn.net/AnillegalName/article/details/135649526
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。