Integer数字的比较

发布时间 2023-11-16 10:33:20作者: miku音未来

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方法返回值,最后==就变成值的大小比较。