2013-11-13 1 views
0

здесь класс я хочу, чтобы сравнить:Какое значение equals() сравнивается при использовании для сравнения двух объектов?

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

результат

ложные

+0

У Вас нет переопределяется 'equals' – Reimeus

+0

@Reimeus он не должен. Hes оригинальный вопрос, как работает «Object # equals» –

+0

Это зависит от реализации equals() класса объекта. В вашем примере используется значение по умолчанию, которое описано в javadoc объекта. Если вы хотите знать, как строки сравниваются с equals(), посмотрите на javadoc из String.equals(). Аналогично для всех классов. –

ответ

8

Ваш test класс не переопределяют equals, поэтому он наследует the method from Object:

Равных метод класса Object реализует самые взыскательные возможное отношение эквивалентности на объектах; то есть для любых непустых опорных значений x и y этот метод возвращает true тогда и только тогда, когда x и y относятся к одному и тому же объекту (x == y имеет значение true).

Это не один и тот же объект, поэтому возвращается false.

Смежные вопросы