怎样理解equals()方法.
为什么有时是相等有时不相等

解决方案 »

  1.   

    我认为是看对象的内容(对象的值)是否相等,相等返回true,不等返回false.
      

  2.   

    建议看看jdk的源码,哪有他的实现。这个方法是可以,覆写的。
      

  3.   

    当比较包装类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==。
      

  4.   

    1,equals 缺省是reference(引用)的比较
    2,== 和!=是reference(引用)的比较(同一个实例)
    3,java标准库里的class大都override(覆写)了equals,所以这些class都做reference(引用)的比较
      

  5.   

    equal()比较的是值。等号比较的是地址。
    比如:
    String str1="a";
    String str2="a";if(str1.equal(str2)){//结果是true
    }if(str1==str2){//结果是false,因为两个内存地址不同
    }
      

  6.   

    "=="是表面值的比较,而"equla"是比较该对象在内存 中站用 的空间地址的比较
      

  7.   

    好像Rellen()说的跟Vicky_vaoxj()相反啊
      

  8.   

    上面的全部说的不怎么对。对于基本类型,== 直接比较值;equals没有
    对于对象,== 直接比较对象在的应用,而equals是调用对象的这个方法,至于如果比较,是看这个方法内容的,不是简单比较。你可以把这个equals写的很复杂比如这个对象所有属性值的比较。
      

  9.   

    1,equals 缺省是reference(引用)的比较
    2,== 和!=是reference(引用)的比较(同一个实例)
    3,java标准库里的class大都override(覆写)了equals,所以这些class都做reference(引用)的比较建议好好思考这3句话
    // From 'Thinking in Java, 2nd ed.' by Bruce Eckel
    // www.BruceEckel.com. See copyright notice in CopyRight.txt.class Value {
      int i;
    }public class EqualsMethod2 {
      public static void main(String[] args) {
        Value v1 = new Value();
        Value v2 = new Value();
        v1.i = v2.i = 100;
        System.out.println(v1.equals(v2));
      }
    } ///:~
      

  10.   

    关于equals方法和==号的区别。
    ==在基本数据类型比较的时候是比较的值,在比较对象的时候是比较的引用地址。
    equals方法是Object类里面的一个方法,它的意义是比较两个对象的内容,但是这只是它的意义而已,在Object方法内部的equals方法还是使用的“==”来比较的,如果你看过jdk的源代码的话你就会知道,所以要实现对象的比较必须覆盖掉Object的方法。
    但是对于很多对象,其实已经覆盖掉了里面的方法,比如Integer类。
      

  11.   

    spiniper()说的不错,最后一句话再补充一下
    正因为有些类已经override了equals方法实现了实例的比较,而有些类则需要我们自己实现,所以就导致equals在比较对象的时候,有时和==效果一样(这就说明这个类没有覆盖原来的equals方法),而有时又比较的是对象的内容(这说明这个类已经覆盖了原来Object类的equals方法,实现了equals比较对象内容的真正意义)。
      

  12.   

    这句话是错误的哦。。Java中有字符串池而上面的都是字符串常量,引用指向同一个地址,故答案是TRUE TRUE