资料
Object中的equals方法是用于检测一个对象是否等于另外一个对象,检测的方法是判断两个对象是否具有相同的引用。1。那就直接用==不就行了,要equals干什么?
2。
String s1 = "asdf";
String s2 = "asdf";
s1 == s2 返回false, 为什么??
但s1.equals(s2) 是返回true,这又是为什么呢?

解决方案 »

  1.   

    == 比较的是对象
    equals比较的是内容
      

  2.   

    ==是判断两个变量或实例是不是指向同一个内存空间
    equals是判断两个变量或实例所指向的内存空间的值是不是相同 
      

  3.   

    Object中的equals方法是用于检测一个对象是否等于另外一个对象,检测的方法是判断两个对象是否具有相同的引用。 
    那这句话错了??
      

  4.   

    s1==s2不可能返回false,返回的是true。因为他们的引用是一样的
      

  5.   

    注意到原句中说的是  Object  中,虽然所有类均继承于Object类,但equals方法在其它子类中应该被重置了.
    本人如此理解,错了勿砸!
      

  6.   

    搞笑的吧
    s1==s2不可能返回false,返回的是true。
      

  7.   

    ==比较的是两个对象的内存地址
    equals()的返回值则要根据具体类的equals()方法的实现来确定。
    Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
      

  8.   

    汗,楼主难道真的跑出false来了?强烈建议楼主贴出运行结果的截图
      

  9.   

    public static void main(String args[])
    {
    String s1 = "asdf";
    String s2 = "asdf";
    if(s1 == s2)
    {
    System.out.println("true");
    }
    else
    {
    System.out.println("falst");
    }

    }
    是这样理解吗??我试了下 返回true
      

  10.   

    在Object里equals与==是相同的效果,String类里重写了equals方法,比较的是字符序列是否相同。
    String s1 = "asdf";
    String s2 = "asdf";
    s1==s1;//true 它们指向的是同一对象,同一内存地地
    s1.equals(s2);//true
      

  11.   


    不可能返回的是false,
    equals()方法:
      这个方法最初是定义在Object类中的,方法应该是这样子的:public boolean equals(Object obj){ return this == obj;}
      也就是说,在Object类中定义的equals()和“==”是一样的,都是比较引用变量是否相同的。
    而在String类中,重写了这个equals()方法,不紧比较引用变量,也比较字符串的内容(看jdk的源代码),所以才出现你那样的情况。             
      

  12.   

    在objcet类中 equals()和==是等效的,而String类中的equals方法被系统重写了,而自定义的类要比较内容,是需要自己改写equals方法的
      

  13.   

    楼主  你的代码 怎样写的 发来看看咯~~一头雾水  反正我滴素 true
      

  14.   

    object的equals的方法就是比较对象是否相等,但是String它重写了equals方法,重写成比较对象里面的内容是否相等,所以s1.equals(s2) == true
      

  15.   

    谢谢大家,我知道我怎么错了,我写出来,希望大家不要和我一样。
    class wrenwren {
    public static void main(String args[])
    {
    String a = "cc";
    String b = "cc";
    System.out.println("a==b"+a==b);
    }
    }
    我是这样验证的,结果既不是a==btrue,也不是a==bflase。
    而是false,看了结果,我都没考虑a==b哪去了,就来这里问,实在不好意思。
      

  16.   

    equals方法是除了检查值相等外,还会检查是否有相同的引用.而==则值检查值是否相等.
    例:String a="ab";
    String b="ab";//重新创建一个对象,有新的内存.
    String c=a;//引用a,和a引用了同一地址.
    a.equals(b)==false;//由于有不同的引用所以返回false
    a.equals(c)==true;//值和引用都相同.
    (a==b)==true;//以下两个只判断值相等,所以都返回true.
    (a==c)==true;
      

  17.   

    ls
    你这个错了a.equals(b)==false;//由于有不同的引用所以返回false
    应该是true