谢谢!!!

解决方案 »

  1.   

    顺便看看这个程序的输出结果:和我想的不一样啊!
    public class StringTest {
    public boolean equals(Object b)
    {
    System.out.println("equals is called");
    return this==b;
    }
    public static void main(String[]arg)
    {
      String a=new String("Hello");
      String b=new String("Hello");
      if(a.equals(b))
      System.out.println("true");
      else 
      System.out.println("false");
    }
    }
      

  2.   

    给你个例子!
    abstract class Base{
    public Base(int i){
    System.out.println("Base constructor, i ="+i);
    }
    public abstract void f();
    }
    public class AnonymousConstructor{
    public static Base getBase(int i){
    return new Base(i){
    {
    System.out.println("Inside instance initializer");
    }
    public void f(){
    System.out.println("In anonymous f()");
    }
    };
    }
    public static void main(String[] args){
    Base base = getBase(47);
    base.f();
    }
    }
      

  3.   

    输出是true呀 怎么了?
    equals就是看他们是否相同了,他不是比较地址的。
      

  4.   

    你的那个程序,有什么不对吗? 我觉得输出很正常呀!a.equals(b)你这里调用的依然是Object里的equals呀 !
      

  5.   

    虽然你覆盖了equals方法,可是你比较的是String对象,又不是StringTest 对象,肯定不会调用你覆盖的那个equals方法了!
      

  6.   

    你可以看return new Base(i) 及其后面大括号中的内容这即使匿名内部类的特点,可以看看Upcasting原理.
      

  7.   

    package testjboss;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2005</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */public class StringTest {
      public boolean equals(Object b) {
        System.out.println("equals is called");
        return this == b;
      }  public static void main(String[] arg) {
        StringTest a = new StringTest();
        StringTest b = new StringTest();    if (a.equals(b)) {
          System.out.println("true");
        }
        else {
          System.out.println("false");
        }
      }
    }
    //===========================结果
    equals is calledfalse
      

  8.   

    要多注意细节问题,有两个方法:一是从String类继承,重载方法equals;另外就是 a,b两个对象的类型声明!
      

  9.   

    我记得Object类的equals方法就是比较两个引用是否引向相同的地址