首页 > 代码库 > 关于Integer对象比较,和int基本类型比较的一些问题
关于Integer对象比较,和int基本类型比较的一些问题
public class Test { public static void main(String[] args) { Integer j = 192; int i = 192; System.out.println(new Integer(12) == new Integer(12));//false对象比较。///必然不同 System.out.println(new Integer(192) == i);//true自动拆箱 System.out.println(j == i);//true自动拆箱 Integer x = 127; Integer y = 127; System.out.println(x == y);//java在编译的时候,被翻译成-> Integer i5 = Int//eger.valueOf(127);
Integer k = 128; Integer l = 128; System.out.println(k == l); } }
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
上面为Integer的valueOf源码对于-128到127之间的数,会进行缓存,Integer = 127时,会将127进行缓存,下次再写Integer = 127时,就会直接从缓存中取,就不会new了。所以小于等于127时候会true大于会false。。当然-128以下亦然
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。