Duvida questão do Inquisition

4 respostas
Jeferson_Manetti

olá pessoal…

segue questão:

public static void main(String... args) { Integer x=5; Integer y=x; y++; System.out.println(x); }

eu diria q isso imprimi 6, mais na verdade ele imprimi 5…

pq ele imprmi 5?

nesse pedaço estou passando uma copia??? pensei q era a referencia…

Integer x=5; Integer y=x;

nessa eu viajei…

ah!!! sei q da 5 pq testei o codigo ^^

alguem sabe me explicar oq aconteceu?

4 Respostas

T

public static void main(String... args) { Integer x=5; Integer y=x; y++; System.out.println(x); }

O código acima é equivalente a:

public static void main(String... args) { Integer x=Integer.valueOf (5); Integer y=x; y = Integer.valueOf (y.intValue() + 1); System.out.println(x); // deve imprimir 5 porque você não mexeu no x, só no y }

ajfilho

Imprimi 5 pq vc tá mandando jogar na tela o X, e o X vale 5!

Abraços!!

Jeferson_Manetti

bom entendi o seguinte…

public static void main(String... args) { Integer x=5; // isso seria... crie um objeto Integer com o valor 5... logo a referencia x estaria apontando para este obj; Integer y=x; // a tribua o Obj q a referencia x esta apontando para y... portanto y tambem ia referenciar ao obj Integer 5 y ++; // aqui eu iria acrescentar o Obj Integer com + 1... atravez de unboxing... // portanto o obj q y referencia iria vlaer 6... e como x tambem referencia este OBJ ele tamebm valeria 6 System.out.println(x); }

putz viaje total…
acho q confundi os conceitos XD

mais saquei oq o tingol explicou XD
isso aqui diz td…

D

wrappers são imutaveis…

mesmo conceito de Strings…

:smiley:

Criado 10 de dezembro de 2008
Ultima resposta 10 de dez. de 2008
Respostas 4
Participantes 4