Questão sobre Igualdade ( equals() e == )

Boa noite pessoal,

estou estudando um pouco aqui para a certificação OCJA que irei prestar dentro de uma semana e a seguinte questão me causou confusão onde a resposta correta é a D.

Alguem poderia me informar o motivo ? realmente tentei descobrir mas não obtive sucesso.

Agradeço imensamente a ajuda.

Segue a questão:

Given the following implementation of the Car class:

public class Car extends Object{
String model;
public Car(String m) {model = m;}
}

What would be the result of running the following code?

Car myCar = new Car(“Silver Z3”);

Car stolenCar = new Car(“Silver Z3”);

if (myCar.equals(stolenCar)) {

System.out.println(“look at that pretty car.”);

}

if (myCar == stolenCar) {

System.out.println(“SOMEBODY HAS STOLEN MY ******* CAR!!!”);

}

A) look at that pretty car

B) SOMEBODY HAS STOLEN MY ******* CAR!!!

C) look at that pretty car SOMEBODY HAS STOLEN MY ******* CAR!!!

D) there will be no output

A resposta sera a D)

Primeiro pq ao verificar com equals, vc deve dar um Override no metodo da classe Object e realizar a verificacao dos atributos
Segundo pq o == verifica igualdade de porimitivos e nao havera resultado, pois ele verificara o ID do objeto na memoria

A entendi…

com respeito à comparação do == eu sabia que não seria exibido nada pois o == compara primitivos. porém na comparação com o equals eu imaginava que daria certo pois não imaginava que eu obrigatóriamente teria de dar Override no método Equals para poder comparar o Objeto.

Na minha cabeça estou acostumado a dar o Equals em Objetos que sobreescrevem o Equals como a String e acabei pensando que não precisaria neste caso.

Muito obrigado pela explicação Guilherme, fico lhe devendo essa =D.