Метод equals() и сравнение объектов

Я изучал основы Java и увидел метод equals() и написал этот код

public class EqualsTest {
public static void main(String[] args) {
    String str = new String("this");
    String str2 = new String("this");

    Object obj1 = new Object(6);
    Object obj2 = new Object(6);

    System.out.println(str == str2);
    System.out.println(str.equals(str2));

    System.out.println(obj1 == obj2);
    System.out.println(obj1.equals(obj2));
    }
}

и это.

public class Object {
public int num;

public Object(int num) {
    this.num = num;
    }

}

Когда я запускаю код, я получаю результат, говоря

false
true
false
false

Я мог понять, почему я получил первые два результата. (false и true) Оператор '==' сравнивает, ссылаются ли str и str2 на один и тот же экземпляр, а метод equals() сравнивает фактическое значение внутри.

Однако я не мог понять, почему я стал ложным для обоих

obj1 == obj2;
obj1.equals(obj2);

Я думал, так как они оба имеют значение 6 с ними,

obj1.equals(obj2);

эта строка должна была дать истину в результате.

Может кто-нибудь, пожалуйста, объясните это?

Спасибо.

0 ответов

Другие вопросы по тегам