128陷阱-讲解

public class Test{
public static void main(String[] args) {
     int a1 = 30;
     int a2 = 30;
        // 值比较:true
        System.out.println(a1 == a2);

        int b1 = 130;
        int b2 = 130;
        // 值比较:true
        System.out.println(b1 == b2);

        Integer c1 = 30;
        Integer c2 = 30;
        // 类比较,但在-127~128之间,属于常量:true
        System.out.println(c1 == c2);

        Integer d1 = 130;
        Integer d2 = 130;
        // 类比较,不在-127~128之间,属于新建对象:false
        System.out.println(d1 == d2);

        Integer e1 = 130;
        Integer e2 = 130;
        // 类转为数值比较:true
        System.out.println(e1.intValue() == e1.intValue());
        
        Integer f1 = 130;
        int f2 = 130;
        // f1自动拆箱,不涉及128陷阱,与f2比较:true
        System.out.println(f1 == f2);

        long g1 = 30;
        long g2 = 30;
        // 值比较:true
        System.out.println(g1 == g2);

        long h1 = 130;
        long h2 = 130;
        // 值比较:true
        System.out.println(h1 == h2);

        Long i1 = 30l;
        Long i2 = 30l;
        // 类比较,但在-127~128之间,属于常量:true
        System.out.println(i1 == i2);

        Long g1 = 130l;
        Long g2 = 130l;
        // 类比较,不在-127~128之间,属于新建对象:false
        System.out.println(g1 == g2);    

        Long k1 = 130l;
        Long k2 = 130l;
        // 类转为数值比较:true
        System.out.println(k1.longValue() == k2.longValue());
        
        Integer l1 = 130l;
        int l2 = 130l;
        // l1自动拆箱,不涉及128陷阱,与l2比较:true
        System.out.println(l1 == l2);
   }
}

简单一点讲装箱就是基本数据类型自动转换为包装类,拆箱与之对应,包装类自动转换为基本数据类型.

    //自动装箱
        Integer s = 123;
        //上面语句其实相当于这条语句
        Integer ss = Integer.valueOf(123);


 


装箱就是自动将基本数据类型转换为包装器类型;

拆箱就是自动将包装器类型转换为基本数据类型。

警告:
    自动装箱规范要求,boolean、byte、char<=127, -128<=  short、int  <=127被包装到固定的对象中。

也就是说:刚才a和b都等于127,介于-128~127之间,所以他俩其实指向的是同一个对象,所以用==比较的话,肯定是true。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值