Não, entendi muito bem Integer(10) e porque são iguais?
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.