118页->在Java中如果==被使用于两个引用名称时,它是用于比较两个引用名称是否引用自同一对象...(蓝字)120页->不可以用==来比较两个字符串的字符内容是否相同.(蓝字)
120页->如果要比较两个字符串对象的字符值是否相同,要使用equals()方法...(蓝字)174页(第一段)->Object默认的equals()本身是比较对象的内存地址是否相同.....个人理解:
==:比较的是两个对象的内存地址(引用类型指向堆中的地址)。
equals():比较的是两个字符串的字符值是否相同。174页
我的理解是,在Java中equals()本身是比较对象的内存地址是否相同,当我们改写后则变成比较的是两个字符串的字符是否相同。

解决方案 »

  1.   

    对的,你的理解完全正确!所有类基类 Object 中的 equals 方法就是使用 == 的,我们一般会在需要进行对象比较的类中改写这个方法。
      

  2.   

     不客气,呵呵。实际上看看 Object#equals 方法的源代码就明白了  :-)public boolean equals(Object obj) {
        return (this == obj);
    }
      

  3.   

    String类里面重写的equals方法
      public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
    char v1[] = value;
    char v2[] = anotherString.value;
    int i = offset;
    int j = anotherString.offset;
    while (n-- != 0) {
        if (v1[i++] != v2[j++])
    return false;
    }
    return true;
        }
    }
    return false;
        }