小弟刚学java求教了当创建一个新的对象的时候 Object obj=new Object();
说的是创建了一个新的内存空间 让obj指向这个地址 (说的对吧)
再创建一个Object obj2=new Object();
有什么办法能够比较两个对象开辟的内存空间不一样呢?这个问题源于 对象的equals的方法。 int[] array1={1,2}(比如)
                                  int [] array2={1,2}array1.equals(array2) 返回false 为什么? equals 不是比较的内容嘛?Array.equals(array1,array2) 返回的就是true想看看有什么办法能够知道他们的指向的地址有什么不同, 也便于以后的学习理解谢谢了

解决方案 »

  1.   

    还有一点补充 hashcode就是obj指向的地址嘛?
      

  2.   

    == 可以判断两个对象地址是否一致, array1.equals(array2) 判断两个对象地址是否相同,Array.equals(array1,array2)判断两个数组是否相等:元素个数相同,对应位置元素相同
      

  3.   

    默认情况,Object的hashcode返回的是对象的类型和地址==比较的是对象的地址
    而equals的语义是比较对象的内容,如果自己不重写的话,默认调用的是object的equals方法,比较的是地址。
    对数组调用equals,可能是因为直接调用的是object的equals方法,比较的是地址。
      

  4.   

    java里所有的类默认的都是继承Object,Object类中的equals方法比较的就是堆中的地址,所以返回false;
    至于返回true的类得equals方法都是重写过的,比较的事内容
      

  5.   

    当创建一个新的对象的时候 Object obj=new Object();
    说的是创建了一个新的内存空间 让obj指向这个地址 (说的对吧)
    再创建一个Object obj2=new Object();
    有什么办法能够比较两个对象开辟的内存空间不一样呢?
    System.out.println(obj == obj2)//输出false,表示不一样这个问题源于 对象的equals的方法。 int[] array1={1,2}(比如)
      int [] array2={1,2}array1.equals(array2) 返回false 为什么? equals 不是比较的内容嘛?Array.equals(array1,array2) 返回的就是true这个问题要看你用的那个类是怎么实现equals方法的。
    建议你在网上下点视频来看,我也是新手!