Integer cc=1;
    Integer dd=1;                  
    System.out.println(cc==dd);  //true 
    System.out.println(cc.equals(dd));    Integer aa=new Integer(1);
    Integer bb=new Integer(1);
    System.out.println(aa==bb);    //false     
    System.out.println(aa.equals(bb));  //true 

解决方案 »

  1.   

    Integer cc=1;
      Integer dd=1;  
      System.out.println(cc==dd); //true  比较的是地址
      System.out.println(cc.equals(dd)); 比较的是内容  Integer aa=new Integer(1);
      Integer bb=new Integer(1);
      System.out.println(aa==bb); //false  比较的是地址
      System.out.println(aa.equals(bb)); //true 比较的是内容
      

  2.   

    ==号是判断它们的对象是否相同而equal()是判断它们的值是否相同  这样理解可以吗
      

  3.   

    == 比较内存引用地址是否相等。
    aa指向 一块内存地址 放置new Integer(1)这个Integer实例,该实例存在一个指向 1这个常量地址的引用。
    bb指向 一块内存地址 放置new Integer(1)这个Integer实例,该实例存在一个指向 1这个常量地址的引用。
    由于是new出来的,说 上面两个Integer实例内存地址不一样,就是aa,和bb指向的地址不一样
    所以为false
    而equals是比较 内容的,可以说最后1那个常量地址的比较。因为一个常量可以认为在内存中只有一块地址,所以equals相等。
    Integer cc=1;
    Integer dd=1;
    这句
    cc的内存地址含有1这个常量的地址。也就是cc指向 1常量的内存地址
    dd的内存地址含有1这个常量的地址。也就是cc指向 1常量的内存地址
    == 是比较内存地址的引用是不是一样的。
    结果都是指向1这个个常量的,
    所以==为true。