==和equals的区别?

解决方案 »

  1.   

    equals 是值的比较==是引用的比较比如String str1 ="abcd";
    String str2 = "ab";
    String str3 = "cd";
    String str4 = str2 + str3;
    这里的str4的值虽然和str1相同
    但它是重新在堆栈里开辟了块空间,已经是一个新的对象,和str1指向的不同了。。
    str1.equals(str4) 结果为 true
    str1 == str4      结果为false不知道这讲是不是对的。。
      

  2.   

    equals是对值的比较,而==是对象的比较
      

  3.   

    你首先要明白,equals是在Object类定义的,
    1.
    在Object中是这样定义equals方法的,
    当且仅当,两个比较的对像是同一个时结果才为true,这和==是一样的
    例如:A a=new A();
          A b=new A();
          A c=a;
    则: a.equals(b)//false
         c.equals(a)//true
    2.在java中有很多类都重写了equals方法,比如说最常见的String类,
     它的equals方法就只看两个String的内容是不是一样,如果一样就返回true
    例如:String a=new String("test");
          String b=new String("test");
          a.equals(b)//true
          a==b//false 
    3.也就是说==对于比较两个对象来说,只有它们完全是一个对象时才返回true
    4.当你自己写一个类时class Test在你没有自己写equals方法时,它会自动继承Object类的
    equals方法,所以就会有下面这种情况了,
           Test a=new Test();
           Test b=new Test();
           Test c=a;
           a.equals(b);//false
           a==b       //false
           a.equals(c);//true
           a==c       //true
      

  4.   

    ==是指两个引用是不是同一个实例,而equals不管是不是同一个对象,它是比较实例中的值
      

  5.   

    ==是一个操作符,equals是一个方法,机制肯定不一样了
      

  6.   

    ==是一个操作符,equals是一个方法
      

  7.   

    ==相当于比较地址,String a="aadf";String b=a; 地址相同,
    String a="aadf"; String b="aadf";地址不现equals,看类的实现,对于String比较字符串。
      

  8.   

    刚才说错了
    ==相当于比较地址,String a="aadf";String b=a; 地址相同,
    String a="aadf"; String b="aadf";地址也相同,是因为String在JVM上的特殊处理
    String a="aadf"; String b = new String("aadf");地址不同
    equals,看类的实现,对于String比较字符串。