javaEE之Integer的自动装箱和自动拆箱

1、自动装箱

Integer i1=100;
Integer i2=100;
System.out.println(i1==i2);//true

Integer i1=200;
Integer i2=200;
System.out.println(i1==i2);//false
/*自动装箱调用的是valueOf()方法,执行valueOf()方法会先判断i的值。
因为在Integer的缓存中放入了常见的int值-128-127;提高执行效率
如果需要自动装箱的值在缓存的范围内,会从常量池中拿出数据,不需要new对象。所以比较相等。
否则会调用Integer的构造方法进行自动装箱,会new对象,我们知道new出的是地址值肯定不一样*/
public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

static final int low = -128;
static final int high= 127;

2、自动拆箱

Integer i1=200;
int i2=200;
System.out.println(i1==i2);//true

/*自动拆箱调用的是intValue()方法会直接返回value的值,
在比较是i1转换为int类型的数据进行比较*/
public int intValue() {
    return value;
}
private final int value;
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!