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
本文来自博客园,作者:昊昋,转载请注明原文链接:https://www.cnblogs.com/hbaook-geui/p/15594539.html