Object的equals方法定义为:x.equals(y)当x和y是同一个对象的应用时返回true否则返回false。同一个对象的应用时。这句话是什么意思,最好可以举例说明,谢谢

解决方案 »

  1.   

    比如
    String a = new String("张飞");
    String b = a;//让引用b指向引用a所指的对象   
    这就是两个引用指向同一个对象    这样的话 a.equals(b)  则返回TRUE
      

  2.   

    补充   当String c = new String("张飞");
    /*
    a.equals(c);*/
    仍然输出TRUE   因为String类重写了equals方法~~~~~
    否则只有3楼情况才可能出现TRUE   *里边的情况是不可能出现TRUE的
      

  3.   

    自己可以去看equals的方法的实现1、这个方法首先比较二者是否属于同一个类
    例如 String x="123"; integer y=123;因为是不同类型,所以直接返回false
    2、如果二者是同一类型,会比较二者内存中的实际内容是否一致,至于他们的内存地址是否相同不做比较。比较内存地址用“==”
    3、还要比较hashcode是否相同
      

  4.   

    很多人搞不清楚==和equals的区别==是判断两个变量或实例是不是指向同一个内存空间,用来比较对象引用(地址)。
    equals是判断两个变量或实例所指向的内存空间的值是不是相同,比较对象存储内容(值)  
       
      例如:  
      String   str1   =   new   String(”abc”);  
      String   str2   =   new   String(”abc”);  
       
      str1   ==   str2       false  
      比较引用地址。  
      str1.equals(str2)     true.  
      比较字符串内容。  
       
      String   str1   =   “abc”;  
      String   str2   =   “abc”;  
       
      str1   ==   str2     true  
      str1.equals(str2)     true  
      这个结果是字符串池的原因,和数据库连接池类似。 不要使用==运算符来检测两个字符串是否相等!它只是测定两个串是否存储在同一个位置。当然,如果串是在同一个位置,那么它们必定相等。但是确实有可能吧串的多个拷贝存放在不同的地方。
      

  5.   

    如果对象实现了equals方法比较的就是两个对象的实际内容,如果对象没有实现equals 方法,则比较的就是两个对象的地址是否相同
      

  6.   

    Object类的equals方法就是用==判断的,而==是比较对象的内存地址的
      

  7.   

    "同一个对象的应用" 其实是指两个对象的内容一样。
    "equals"可以理解为两个对象引用所指向的内容相同;
    "=="是指对象引用相同 ;
    例如:
    String str1=new String("ABC");
    String str2=str1;
    String str3=new String("ABC");
    String str4=new String("abc");str1==str2;为true,因为str1,str2都指向同一个"ABC";
    str1.equals(str2);为true,因为str1,str2所指内容一样就是"ABC";str1==str3;为false,因为str3 又new了一块新内存空间来放"ABC",str1和str3不是指向同一个"ABC";
    str1.equals(str3);为true,因为str1,str3所指内容一样就是"ABC";str1==str4;为false,因为str1和str4指向不同;
    str1.equals(str4);为false,因为str1,str4所指内容不一样,一个是"ABC" 一个是"abc"
      

  8.   

    同一对象的引用,其实就是对比对象在内存中的储存地址,如果地址一样,就是同一对象了,如果不想进行内存中地址的对比,那就要重写equals方法了
      

  9.   

    可以说java中的引用和c中的指针一样,就是两个指针指向同一个对象,也就是同一段内存。
      

  10.   


    楼上的都讲得很明白了,我就说说我用.equals()的方法吧,如果知道是一个固定值,我就用("固定值").equals(string); 这样可以避免空指针异常!!