Java整型(int, Integer) 之间的比较
程序员文章站
2022-07-15 10:38:10
...
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
推荐阅读
-
Integer和int使用==比较的总结
-
Java面试题之int和Integer的区别
-
Java13-day04【Integer、int和String的相转、自动装箱和拆箱、Date、SimpleDateFormat、Calendar、异常、try...catch、throws】
-
java中int和Integer的区别(详解)
-
Java整型(int, Integer) 之间的比较
-
Java中Integer和int数据类型的比较
-
浅谈Java中Int、Integer、Integer.valueOf()、new Integer()之间的区别
-
你知道在Java中Integer和int的这些区别吗?
-
Java中int和Integer的区别
-
int与integer的区别-Java四大特性-修饰符访问的范围-Java与c++区别-JDK和JRE-StringBuilder和buffer