Determinando igualdade em Java pode ser um esforço não trivial como diferenciar a semântica entre “se dois objetos são o mesmo” ou “se dois objetos são equivalentes.” É mais complicado pelo fato de que os primitivos numéricos e booleanos, não há tal distinção.

Vamos começar pelo básico, o operador de igualdade == e o operador de não igualdade !=. Como operadores relacionais, eles comparam dois operandos e retorna um boolean de acordo com a expressão, se são iguais ou não.

Os operadores de igualdade são utilizados em três cenários:

  1. Comparando dois tipos numéricos primitivos. Se os valores numéricos são tipos diferentes, os valores são automaticamente promovidos. Por exemplo, 5 == 5.00 o retorno será true desde que o valor da esquerda seja promovido para double.
  2. Comparação entre dois booleans.
  3. Comparando dois objetos, incluindo null e valores em String.

As comparações por igualdade são limitadas para esses três casos, você não pode misturar tipos para comparar. Por exemplo:

boolean x = true == 3; // não compila

boolean y = false != “Girafa” // não compila

boolean z = 3 == “Canguru” // não compila

Preste atenção para os tipos de dados e o operador de igualdade quando aparecer no exame. Os criadores do exame têm o hábito de misturar operadores de declaração e operadores de igualdade. Exemplos:

boolean y = false;

boolean x = (y = true);

System.out.println(x); // Resultado true

À primeira vista você pode achar que o resultado deveria ser false, se a expressão y = true fosse y == true aí sim o resultado seria false.

Para comparar objetos, o operador de igualdade é aplicado a referências dos objetos, e não para os tipos de objeto. Duas referências são iguais se apenas eles apontarem para o mesmo objeto (o mesmo objeto não é o valor do objeto) ou ambos forem null. Exemplos:

File x = new File(“myFile.txt”);

File y = new File(“myFile.txt”);

File z = x;

System.out.println(x == y); // resultado false

System.out.println(x == z); // resultado true

Os três objetos estão apontando para o mesmo arquivo myFile.txt, mas só x e z são iguais.

Se quiser os ebooks do volume 1 e 2 da certificação Java, basta assinar a lista.

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário

*

Seja o primeiro a comentar!