今天在论坛里看到这样一个题目
















问结果是什么.答案我都写在了后面.
对于Integer int1 = Integer.valueOf(k);
这句我们都知道是jdk1.5加上的自动装折箱功能.也就是自动的进行原始类和其封装类的互转.
可是后面的int1 == int2返回true而同样的方法int3 == int4返回false就让人想不通了.
最后还是看了jdk的源码才明白过来
valueOf()的源码:









它对大小是byte(-128-127)做了处理,它是从IntegerCache初始化的256个Integer缓存中取.
这样就只有一个对象当然就是true了,而后面的200超出了这个范围就是用new Integer(i)产生了一个新的对象,返回就是false了.