Integer a=100 实际上是执行了 Integer i=Integer.valueOf(100)的操作,Integer类型的范围是-128~127,当满足条件时会放入缓存空间中。
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
而c=1000不在-128~127的范围内,则会开辟新的内存地址。所以c==d返回为false。