Integer 、 int的比较
一、Integer与Integer
Integer = 200
Integer 200与200用 == 比较,返回false
比较过程:200是int,装箱后Integer是引用类型,==就比较缓存地址。a,b内存地址不同,返回false
Integer = 127
Integer 127与127用 == 比较,返回true
比较过程:int装箱后Integer是引用类型,在装箱过程中其实是 int=>Integer.valueOf(int),然后比较内存地址;结果为什么是true,是因为valueOf方法里面调用了Integer类中的缓存默认[-128,127],127在区间范围内,所以内存地址一样。
二、Integer与int
Integer = 200;int = 200;
Integer 200与int 200用 == 比较,返回true
比较过程:在a==b比较的时候,通过反编译(看下图),其实是int与int的比较,所以返回true