Não, entendi muito bem Integer(10) e porque são iguais?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Não, entendi muito bem Integer(10) e porque são iguais?
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.