0

这是我要比较的课程:

public class test
{
   private String str=null;
   private int integer=0;
   private double doubleNum=1.1; 
}

现在我通过实例化两个相同的类来比较它

public class testEquals
{
   public static void main(String[] args)
   {
      test s1 = new test();
      test s2 = new test();
      System.out.print(s1.equals(s2));
   }
}

结果是

错误的

4

2 回答 2

8

您的test类没有覆盖equals,因此它继承了以下方法Object

Object 类的 equals 方法实现了对象上最有区别的可能等价关系;也就是说,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象(x == y 的值为 true)时,此方法才返回 true。

它们不是同一个对象,因此false返回。

于 2013-11-13T22:26:53.720 回答
2

查看您正在调用的 Object.equals(),您会看到默认实现是使用 == 比较对象,这基本上是比较地址。

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/lang/Object.java#149

于 2013-11-13T22:27:04.647 回答