当你使用它来比较两个对象时,equals()完全比较是什么?

时间:2013-11-13 22:25:15

标签: java

这是我要比较的课程:

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));
   }
}

结果是

  
    

  

2 个答案:

答案 0 :(得分:8)

您的test课程未覆盖equals,因此会继承the method from Object

  

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

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

答案 1 :(得分:2)

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

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