Questao do Inquisition

6 respostas
S
public class Test {
    

    public static void main(String[] args) {
        Integer i5 = 2;
        Integer j5 = 2;
        System.out.println(i5 == j5);
        if(i5 == j5){
            System.out.println("equal");
        }else{
            System.out.println("not equal");
        }
        
    }

pq a resposta é false not equal ?????

6 Respostas

rsakurai

Porque vc está comparando dois objetos Integer.

para a resposta ser “equal”, vc precisa utilizar o método equals(), exemplo: i5.equals(j5)

B

Este código gera a saída “equal”. Rode o código por você mesmo e confira.

Ao instanciar 2 objetos Integers sem utilizar o construtor da classe Integer, caso os valores estejam no intervalo entre -128 e 127 apenas um objeto Integer será criado no heap. Portanto as duas referências apontam para o mesmo objeto.

S

ixii…nao entendi…=(

Lavieri

isso é uma conveniencia da JVM para poupar recursos… geralmente os primeiros 127 caracteres tem esse comportamento, para poupar recuros…

o que vc precisa guardar é… não confie em Integer a, b;

em testar algo como a==b … use sempre a.equals(b); … pois se o range de a e b forem superiores a 127 o resultado pode ser inesperado

W

A resposta aí tá errada…

public class test {

public static void main(String[] args) {   
    Integer i5 = 2;   
    Integer j5 = 2;   
    System.out.println(i5 == j5); [color=green][b]//true[/b][/color]
    if(i5 == j5){  
        System.out.println("equal"); [color=green][b]//equal[/b][/color]
    }else{   
        System.out.println("not equal");   
    }        
}

}

quando compara-se 2 objetos Integer no range de -128 à 127 usando o operador == , o resultado é true.

Se tivessem sido usados constructors para os Integers aí sim seria false not equal.

G

Opa, blz?

Seguinte, eu tb fiquei sempre com essa duvida maldita de == equals... com int, Integers...

Minha sugestão (eu fiz isso!)...

Crie uma classe de teste e use e abuse de '==' e 'equals'. Como?
int i1 = 127;
int i2 = 128;

Integer i3 = 127;
Integer i4 = 128;

Integer i5 = new Integer(127);
Integer i6 = new Integer(128);

Agora brinque a vontade!

Criado 15 de maio de 2009
Ultima resposta 16 de mai. de 2009
Respostas 6
Participantes 6