1.定义两个Integer变量,如下图所示
2.当使用Integer创建变量时,底层使用valueOf方法将int数据进行自动装箱,底层代码如下
1 public static Integer valueOf(int i) { 2 if (i >= IntegerCache.low && i <= IntegerCache.high) 3 return IntegerCache.cache[i + (-IntegerCache.low)]; 4 return new Integer(i); 5 }
3.第2行代码判断数字是否Integer缓存中,范围是-128至127,如果存在则直接返回缓存好的数字,如果不在则使用new Integer创建一个对象。
4.因此如果数字在范围内,==返回true;不在范围内,==返回false(比较的是两个地址)
5.如果是和基本数据类型进行比较,则Integer数据会进行自动拆箱,底层调用intValue方法返回值,最后==就变成值的大小比较。
标签:数字,int,valueOf,Integer,比较,底层 From: https://www.cnblogs.com/miku-39/p/17835654.html