包装类型常量池

Integer, Byte, Short, Long, Character对应值在[-128,127]中时,使用常量池

String 也使用了常量池技术

Float, Double没有使用常量池

Integer a = 59; Integer b = Integer.valueOf(59);都会进行判断是不是在常量池

Integer a = new Integer(59);那就直接分配在堆中了,就是不同的对象了

public class IntegerCache {
    public static void main(String[] args) {
        Integer a = 128;
        int b = 128;
        Integer c = Integer.valueOf(128);
        Integer d = new Integer(128);
        Integer e = new Integer(128);
        //1.59   2.128
        System.out.print(a==b);//true true
        System.out.print(a==c);//true false
        System.out.print(a==d);//false false
        System.out.println();
        System.out.print(c==b);//true true
        System.out.print(d==b);//true true
        System.out.println();
        System.out.print(c==d);//false false
        System.out.println();
        System.out.print(d==e);//false false
    }
}

这里写图片描述


版权声明:本文为pixiaopi87原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。