美文网首页
装箱与拆箱

装箱与拆箱

作者: timar | 来源:发表于2019-07-23 09:34 被阅读0次

1、装箱int到Integer,调用的是Integer.valueOf()

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
IntegerCache.low是-128
IntegerCache.high是127
-128到127范围内会做缓存,防止每次都产生新的对象

        Integer i1 = 127; // 会调用Integer.valueOf()
        Integer i2 = 127;
        Integer i3 = 128;
        Integer i4 = 128;
        System.out.println(i1 == i2); // true
        System.out.println(i3 == i4); // false

2、涉及到运算时会发生拆箱,Integer到int,调用的是Integer.intValue()

        Integer i1 = 127;
        Integer i2 = 127;
        Integer i3 = 128;
        Integer i4 = 128;
        Integer i5 = 0;
        System.out.println(i1 == i2); // true
        System.out.println(i3 == i4); // false
        System.out.println(i1 == i2 + i5); // true
        System.out.println(i3 == i4 + i5); // true
和int做 == 比较,会拆箱成int比较大小

原谅地址:https://www.jianshu.com/p/0ce2279c5691

相关文章

网友评论

      本文标题:装箱与拆箱

      本文链接:https://www.haomeiwen.com/subject/qlogkctx.html