Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 3 da Aula 3 - Java.lang

Não, entendi muito bem Integer(10) e porque são iguais?

3 respostas
solução!

Olá Claudio! Quando fazemos new Integer(10) estamos criando um Objeto que guarda o valor int 10.

Então ao fazermos:

Integer i1 = new Integer (10);
Integer i2 = new Integer (10);

Embora tenham o mesmo valor, são 2 objetos diferentes.

Quando utilizamos o operador == nós comparamos duas variaveis. Ao fazermos i1 == i2 recebemos false, pois as variaveis são diferente, possuem valores atribuidos diferentes pois referenciam objetos diferentes.

Porem, quando fazemos i1.equals (i2) recebemos true, pois o método equals foi sobrescrito na declatacao da classe Integer, defenindo como fator de igualdade os objetos que tenham o mesmo valor. Logo, mesmo sendo dois objetos diferentes, por terem o mesmo valor (10) o método equals diz que são iguais.

Espero ter ajudado. Bons Bons Estudos!

ajudou muito. obrigado

Cláudio, eu havia entendido a alteração, e fui buscar o código do método equals na classe Integer. O código é o seguinte:

public boolean equals(Object obj) { return obj instanceof Integer && value == ((Integer) obj).value; }

Além de checar se obj é integer ele valida o valor.