String a=new String("foo"); 
  String b=new String("foo"); 
System.out.println(a.equals(b)); //返回 false
System.out.println(a.equals(b)); //返回 true;Object对象的equals方法的实现: 
  boolean equals(Object o){   return this==o;   } 那到 Sting 对象的equals不是继承Object的equals ?

解决方案 »

  1.   

    你看源码就知道了
    下边是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;
        }
      

  2.   

    所有类都隐式继承object,所以你说的只能算重载方法
      

  3.   

    源码看不懂 count    value  是什么时候赋值的
      

  4.   

    Object对象的equals方法是比较对象的地址
    Sting 对象的equals进行了重载,如楼上所说的,这时比较的是串里的内容是否一样
      

  5.   

    sungrant() 说得对
    Object的equals是比较两个对象的地址,
    String的只要是里面的东西一样就可以乐,当然地址一样的话肯定是一样的
      

  6.   

    String 类重写了(覆盖了)Object类的 toString方法
    比较特殊阿
      

  7.   

    System.out.println(a.equals(b)); //返回 false
    System.out.println(a.equals(b)); //返回 true;这两句一样的怎么回返回不同的值?
      

  8.   

    Object对象的equals方法是比较对象的地址
    Sting 对象的equals进行了覆盖,这时比较的是串里的内容是否一样
    楼主的结果是错误的,都是true