public class A { public static void main(String[]args){
       A a1 =new A();
       A a2 =new A();
       System.out.println(a1.equals(a2));
    }}
为什么会返回false,在什么情况下可以让new的两个对象相等

解决方案 »

  1.   

    除非你在A中重写hashcode()和equals方法,按照你的规定是这两个对象equals
      

  2.   

    equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
    ==用于比较引用和比较基本数据类型时具有不同的功能:
    比较基本数据类型,如果两个值相同,则结果为true 
    而在比较引用时,如果引用指向内存中的同一对象,结果为true
    Eg:s1 = new String("sony"); //创建的是字符串对象
    s1.equals("sony"); //返回
    trues1 == "sony" //返回false
    //如果
    s1 = "sony";
    s1 == "sony" //返回true
      

  3.   

    一般如果你没有重载equals方法的话,两个不同的实例返回false。如果你需要特殊的equals方法,只能自己重载。
      

  4.   

    你实例话的两个类的内存地址是不一样的,想让它们相等,就得覆盖A的equals()方法,hashCode()方法可以覆盖,也可以不覆盖
      

  5.   

    equals比较的是对象,你初始化了两个对象,他们的hashCode()是不同的。
      

  6.   

    equals 方法在api中比较两个变量的(貌似是)
    但是new出来的保存在不同的内存中所以不equals
    只有重写equals方法和hashcode方法
      

  7.   

    class A 重写Object的equals()方法,即,你认为它们在什么情况下相等。