首页 > 代码库 > 发现个有趣的
发现个有趣的
1 Integer i5 = 127;//编译的时候,被翻译成-> Integer i5 = Integer.valueOf(127); 2 Integer i6 = 127; 3 System.out.println(i5 == i6); 4 5 Integer i5 = 128; 6 Integer i6 = 128; 7 System.out.println(i5 == i6);
第一个输出true,而第二个是false.神奇吧。
下面来看看源码
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); }
对于-128到127之间的数,会对其进行缓存,Integer i5 = 127时,会将127进行缓存,下次再申明Integer i6 = 127时,
就会直接从缓存中取,而不会new了。所以结果为true,而第二个则为false。
发现个有趣的
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。