Java整型(int, Integer) 之间的比较

tech2024-11-30  7

文章目录

1 Integer和int比较2 Integer之间的比较

1 Integer和int比较

Integer是int的封装类,两者在进行比较时会自动拆箱,所以两者的 ==比较只看值是否相等。

Integer a = 1250; int b = 1250; System.out.println(a == b); // true

2 Integer之间的比较

Integer作为类,理论上进行==比较时必须要是相同的对象才返回true,但为了减少内存占用,jdk中Integer的实现用到了一个静态内部类IntegerCache:

该静态内部类维护了一个Integer[]数组 cache,默认的取值范围为 low = -128; high = 127;,并通过下面的代码给数组赋值:

Integer对象的创建:

有很多创建方式:

通过构造方法创建,已经被弃用通过valueOf()静态方法自动装箱,编译时会调用 valueOf()方法

查看valueOf()方法,可以发现在静态类的缓存范围内使用Integer对象都是被缓存了的,所以比较时是 true:

而超出缓存范围的数据比较则是false:

Integer a = 1250; Integer b = 1250; System.out.println(a == b); // false
最新回复(0)