Criei uma classe StringTeste e não entendi o porquê do .equals não comparar corretamente os objetos Funcionario. Quando comparo duas Strings iguais, o retorno do .equals é True, porém quando compara dois objetos Funcionario iguais, o retorno sempre é False. Alguém saberia explicar porque isso acontece?
class StringTeste {
public static void main(String[] args) {
System.out.println("Objeto String:");
String a = new String("Teste");
String b = new String("Teste");
if (a == b)
System.out.println("a == b: True");
else
System.out.println("a == b: False");
if (a.equals(b))
System.out.println("a.equals(b): True");
else
System.out.println("a.equals(b): False");
System.out.println("--------------------------------------");
System.out.println("Objeto Funcionario:");
Funcionario c = new Funcionario("José");
Funcionario d = new Funcionario("José");
if (c == d)
System.out.println("c == d: True");
else
System.out.println("c == d: False");
if (c.equals(d))
System.out.println("c.equals(d): True");
else
System.out.println("c.equals(d): False");
}
}
class Funcionario {
String nome;
Funcionario(String nome) {
this.nome = nome;
}
}