1、在判断 integer2 == int2 的时候,因为一边是属于基本型别 int,所以另一边 Integer 会自动拆包,于是变成了 int==int 的比较。2、s 是存在字符串缓存中的,s2 是新建的对象,不会指向之前创建的任何 "abcd"。

解决方案 »

  1.   

    针对Integer==int这点,其实是这样的,当Integer与int值比较(也就是==)的时候,Integer会自动拆箱成int型,所以是true;http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html
    针对字符串这点,如果使用new来创建一个字符串实例的话,会在堆中创建,如果只是像  String s=“abc”;这样的,虚拟机会在字符串常量池中寻找有没有“abc”对象,如果有,直接将此地址复制给s,如果没有,则会在常量池中创建。http://blog.csdn.net/yuan514168845/article/details/17513437