java 基本数据类型的包装类 小白版 整型字面量的值在-128到127之间,那么自动装箱时不会new新的Integer对象

java 基本数据类型的包装类 小白版 整型字面量的值在-128到127之间,那么自动装箱时不会new新的Integer对象_第1张图片

1.不建议使用new Integer方法,应该改成 Integer的静态方法public static Integer valueOf(int i)

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

2.使用自动装箱Integer i1 = 1时会自动调用 Integer的静态方法public static Integer valueOf(int i)方法
3.如果整型字面量的值在-128到127之间,那么自动装箱时不会new新的Integer对象,而是直接引用常量池中的Integer对象,超过范围 a1==b1的结果是false

public static void main(String[] args) {
    Integer a = new Integer(3);
    Integer b = 3;  // 将3自动装箱成Integer类型
    int c = 3;
    System.out.println(a == b); // false 两个引用没有引用同一对象
    System.out.println(a == c); // true a自动拆箱成int类型再和c比较
    System.out.println(b == c); // true

    Integer a1 = 128;
    Integer b1 = 128;
    System.out.println(a1 == b1); // false

    Integer a2 = 127;
    Integer b2 = 127;
    System.out.println(a2 == b2); // true
}

你可能感兴趣的:(java 基本数据类型的包装类 小白版 整型字面量的值在-128到127之间,那么自动装箱时不会new新的Integer对象)