Test equality between Strings and other objects using == and equals()

Em Java, o operador == compara a igualdade de referências, não o conteúdo real dos objetos. Para comparar o conteúdo de objetos, especialmente para strings, você deve usar o método equals(). Aqui estão exemplos de como testar igualdade entre strings e outros objetos usando == e equals():

Teste de Igualdade entre Strings:

String str1 = "Hello";
String str2 = new String("Hello");
String str3 = "Hello";

// Usando == para comparar referências
System.out.println("Usando == para comparar referências:");
System.out.println(str1 == str2); // false (referências diferentes)
System.out.println(str1 == str3); // true (referências iguais)

// Usando equals() para comparar conteúdo
System.out.println("\nUsando equals() para comparar conteúdo:");
System.out.println(str1.equals(str2)); // true (conteúdo igual)
System.out.println(str1.equals(str3)); // true (conteúdo igual)

Teste de Igualdade entre Objetos não String:

Integer num1 = 42;
Integer num2 = new Integer(42);

// Usando == para comparar referências
System.out.println("Usando == para comparar referências:");
System.out.println(num1 == num2); // false (referências diferentes)

// Usando equals() para comparar conteúdo
System.out.println("\nUsando equals() para comparar conteúdo:");
System.out.println(num1.equals(num2)); // true (conteúdo igual)

Notas Importantes:

  1. Para Strings:
  • Use equals() para comparar o conteúdo real das strings.
  • Evite usar == para comparar strings, a menos que você esteja interessado nas referências exatas dos objetos.
  1. Para Outros Objetos:
  • Mesmo para objetos não String, geralmente é preferível usar equals() para comparações de conteúdo, especialmente quando se trata de classes personalizadas.
  • Alguns objetos, como Integer, podem ser comparados usando == porque são geralmente cacheados em Java para valores pequenos (-128 a 127).
  1. String Pool:
  • Strings literais em Java são colocadas no “string pool”. Isso pode levar a resultados surpreendentes ao usar == para comparar strings literais.

Em resumo, ao comparar o conteúdo de objetos, especialmente para strings, use equals(). Reserve o uso do operador == para comparar referências de objetos, a menos que você esteja lidando com tipos primitivos ou tenha uma razão específica para comparar referências exatas.