Duvida em Conversion

3 respostas
silva.fernandes

É o seguinte …

Neste código … a saida é true, true:

public class Conversion {
	  public static void main(String[] args) {
	        Integer i = 10;
	        Integer j = 10;
	        System.out.print(i==j);
	        System.out.print(i.equals(j));
	    }
	}

E aqui … pq é false, true ? Sendo q só alterei os valores de 10 para 200 ?

public class Conversion2 {
	  public static void main(String[] args) {
	        Integer i = 200;
	        Integer j = 200;
	        System.out.print(i==j);
	        System.out.print(i.equals(j));
	    }
	}

Alguem pode me ajudar ?

Grato

3 Respostas

Kknd

Quando você faz a comparação com “==”, você está vendo se os objetos tem a mesma posição da memória (ou seja, são um objeto só). Para comparar o conteúdo, você tem que fazer Objeto.equals(Objeto2).

silva.fernandes

Sim … eu sei disso …

Mas veja bem … nos 2 casos eu fiz comparações (==) … e (objeto.equal()

No primeiro caso … com os valores igual a 10 … a saida do programa foi … true … true … ou seja … eles ocupam o mesmo lugar na memória (==) … e eles são iguais (objeto.equal())

Porem … qdo eu mudo os valores para 200 … a saida é false, true …

eles não ocupam o mesmo lugar na memória ? mas são iguais …

Pq isso … ?

Fiz comparação até 127 … a saída é true … true … à partir de 128 … a saída é false, true …

Afff … é isso q num to entendendo … :shock:

Kknd

Humm, estranho.
Deve ser um caractarística obscura do java :?:

Criado 13 de outubro de 2006
Ultima resposta 13 de out. de 2006
Respostas 3
Participantes 2