При переопределении метода equals, во время последней проверки сравниваем ссылки на поля model и color. Результат возвращает true, хотя стоит оператор "==" и ссылки, по логике, должны быть разные. Кроме того, куда закидываются поля объектов, cоздаваемые через new? В пул, где их значения равны, разные только ссылки на значения, или же создаются как отдельные блоки пула и ссылки на них разные? Исходя из этого, почему этот код выдает при сравнении true?
package com.javarush.task.pro.task10.task1010;
import java.util.Objects;
/*
Два айфона
*/
public class Iphone {
private String model;
private String color;
private int price;
public Iphone(String model, String color, int price) {
this.model = model;
this.color = color;
this.price = price;
}
//напишите тут ваш код
public boolean equals (Iphone iphone) {
if(this==iphone) {
return true;
}
if (iphone==null) {
return false;
}
if (!getClass().equals(iphone.getClass())) {
return false;
}
return this.model == iphone.model && this.color == iphone.color;
}
public static void main(String[] args) {
Iphone iphone1 = new Iphone("X", "Black", 999);
Iphone iphone2 = new Iphone("X", "Black", 999);
System.out.println(iphone1.equals(iphone2));
}
}