references是实例,你创建了一个类,要给类分配地址空间,赋值。象上面,即使他们的值相同,但是地址空间不一样,所以不能“==”。

解决方案 »

  1.   

    references是引用,也就是对象所分配的地址。n1和n2中的int值虽然相等,但由于他们是两个不同的对象,所分配的地址当然不同。而用==比较的就是他们的地址,所以会有上述结果。
    如果想比较它们中的内容,可以重载Integer的equals()方法。
      

  2.   

    顺便问:
    -----------------------------------
    public class EqualsMethod2{
      public static void main(String[] args){
      Integer n1 = new Integer(44);
      Integer n2 = new Integer(44);
      System.out.prtIn(n1.equals(n2));
      }
    }
    -----------------------------------class Value{
    int i;
    }
    public class EqualsMethod2{
      public static void main(String[] args){
      Value v1 = new Value();
      Value v2 = new Value();
      v1.i = v2.i = 100;
      System.out.prtIn(v1.equals(v2));
      }
    }
    ---------------------------
    这2个结果是true 还是false?解释一下,谢了另外我想问:为什么要这么写?v1.equals(v2)为什么要加个点号啊
      

  3.   

    http://expert.csdn.net/Expert/topic/1137/1137865.xml?temp=8.512515E-02
    equals()方法是Value继承自Object类的方法。引用一个对象中的方法,当然要用“.”了。
      

  4.   

    句柄就相当于c里面的指针。
    如: 你的类
              EqualsMethod2 EM1=new EqualsMethod2();
    EM1就是一个句柄了。
      

  5.   

    也可以用 objectname.valueof()