Метод 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);
эта строка должна была дать истину в результате.
Может кто-нибудь, пожалуйста, объясните это?
Спасибо.