java装箱拆箱

所谓的拆箱装箱,其实就是一个简单的语法糖。我们以Integer为?。

(一)装箱

Integer i = 1;

本质上就是:

Integer i = Integer.valueOf(1);

(二)拆箱

int m = i;

本质上就是:

int m = i.intValue();

(三)小练习


    public static void main(String[] args) {
        Integer a = 1;
        Integer b = 2;
        Integer c = 3;
        Integer d = 3;
        Integer e = 321;
        Integer f = 321;
        Long g = 3L;

        // 返回true:c和d都为-128~127期间的数值,
        // 处于这个期间的数值会被缓存起来,
        // 所以c和d指向的是同一个对象。
        System.out.println(c == d);

        // 返回false:e和f分别在堆中创建了不同的对象。
        System.out.println(e == f);

        // 返回true:在算数运算时包装类型会自动拆箱,
        // 所以(a+b)相当于(a.intValue()+b.intValue()),
        // 同时()的存在并不会触发装箱,所以(a+b)的结果为基本类型,
        // 此时c也会被迫拆箱,所以3=3返回true
        System.out.println(c == (a + b));

        // 返回true,这个不用解释
        System.out.println(c.equals(a + b));

        // 返回true,这个和上面的道理基本一样,
        // g也会被迫拆箱,而基本类型long和int可以直接比较数值,
        // 所以返回true。
        System.out.println(g == (a + b));

        // 返回false,这个主要是因为equals的内部逻辑,
        // 它会先判断是不是Long类型,是的话才会拆箱比较,
        // 否者直接返回false。
        System.out.println(g.equals(a + b));
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斜阳雨陌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值