Integer类型比较

最近开发中遇到个问题,Integer类型的,比较的时候,使用==,后来跟踪bug的时候,发现返回值是false,于是研究了下。

Integer是引用类型,比较的时候比较的是引用地址,需要使用equals

 

测试验证:

 

 

 

Integer类型赋值的时候,Integer.valueOf(150),进源代码发现,(-128) IntegerCache.low <= i <= IntegerCache.high (127)以内的会取缓存内的值,超过会new Integer().

以此类推,在-128到127内的数据,Integer.valueOf(100)创建的,==会是true,否则false。

Integer a3 = 100; 实现是Integer.valueOf(100)

 Integer与int类型比较时,会将Integer转为int类型,所以会是true

new Integer()后,会是新的引用地址,==返回false

posted @ 2021-11-23 18:16  昊昋  阅读(115)  评论(0编辑  收藏  举报