Integer内部已经把-128~+127在缓存池中已经创建好了
e.g. Integer x1=12;
Integer y1=12;
Integer x2=142;
Integer y2=142;
Integer x3=Integer.valueOf(12);
Integer y3=Integer.valueOf("12");
Integer x3=Integer.valueOf(142);
Integer y3=Integer.valueOf("142");
System.out.println(x1==y1); //true
System.out.println(x2==y2); //false
System.out.println(x2==y2); //true
System.out.println(x2==y2); //false
以上是两种采用Integer类的缓存池的写法;
编译器会自动将Integer x=12;转换为Integer x=Integer.valueOf(12);
我们通过观察以上数据的输出结果可以发现在比较较小的值的时候返回值为true,而在比较较大的值的时候返回值变成了false
当值在-128-127的范围内时使用缓存池中原本开辟好的空间,当超出这个范围之后编译器才会分配新的空间,基于此,节约了内存空间;