我现在遇到一个问题,希望大家能给予指点。
class PersonTest
{     public static void main(String args[])
    {

PersonTest p1=new PersonTest();
PersonTest p2=new PersonTest();
System.out.println(p1.equals(p2));

}
}
为什么是false啊??都是默认产生的对象,内容应该一样啊,为什么用String的话就是true呢?希望您能百忙中给以解答,非常感谢!!

解决方案 »

  1.   

    需要重新定义Person类的equals函数。
      

  2.   

    p1和p2是两个新创建的对象,也就是在内存里分别分配了两块地址给他们
    而JAVA默认equals方法比较对象是比较的对象的地址,当然是false了
      

  3.   

    对于一般的对象 equals()继承祖先类Object的equals()方法,这个方法实际上就是调用
    ==的结果,而对于一些特别的类,比如基础类String ,java覆盖了它的equals()方法,只要两个字符串内容相同返回便是True;
      

  4.   

    想要输出true的话,有个简单的方法
    在PersonTest中,定义个这样的方法
    public boolean equals
    {
        return true;
    }
    上面的朋友们已经讲了原因
      

  5.   

    我加了
    public boolean equals
    {
        return true;
    }这个,可答案仍然是false!怎么回事?
      

  6.   

    打错了,是这样的
    public boolean equals(Object obj)
    {
        return true;
    }
      

  7.   

    恩,这次对了,不过这不是强行让结果变成true了吗!我刚才看了JDK,它也没说Object的equals方法比的是地址啊?怎么知道它就相当于==呢?这么说,对于一个自定义的类,那它的equals方法和==就是一样的东西了吗?谢谢答复
      

  8.   

    这样的话可永远都是true哦 哈哈
      

  9.   

    如果想让结果为TRUE的话 必须重写equals的方法 
    String 本身就重写了 所以为true
      

  10.   

    哈哈,LZ好像注重的是结果,只要是True就可以了,管它怎么实现的,呵呵,开个玩笑