Questão

Eu estava realizando alguns exercícios, quando me deparei com esta questão:

[quote]
Given:

class Foozit { public static void main(String[] args) { Integer x = 0; Integer y = 0; for(Short z = 0; z < 5; z++) if((++x > 2) || (++y > 2)) x++; System.out.println(x + " " + y); } }

What is the result?

A. 5 1
B. 5 2
C. 5 3
D. 8 1
E. 8 2
F. 8 3
G. 10 2
H. 10 3[/quote]

Eu acertei, sem problemas, mas antes de ver as alternativas eu cheguei a outros valores, pois estava considerando esta informação presente em um resumo meu:

Ou seja, imaginei que as variáveis x e y estavam apontando para o mesmo objeto o tempo todo. Minha dúvida procede? Quem está errado: O exercício ou eu?

Waocnek

você!

Pode ser que no início eles apontem para o mesmo objeto (o qeu eu não sabia) mas a regra máxima é qeu duas instancias somente serão iguais se elas foram apontadas EXPLICITAMENTE para o mesmo objeto, ou seja, 0 não é um objeto, e sim um primitivo, o Java5 é que faz o “boxing” automaticamente.
Se vc fizer y = x; então eles estarão apontando para o mesmo objeto.
se vc fizer x == y eles serão iguais pq o Java irá fazer o “unboxing”, e fará
0 == 0. Ou se vc fizer x.equals(y) será true pq eles são “meaningfully equal”.

não sei se ajudei ou compliquei mais… mas é por ai =)

Abraços!

Hehe.

[quote]Pode ser que no início eles apontem para o mesmo objeto (o qeu eu não sabia) mas a regra máxima é qeu duas instancias somente serão iguais se elas foram apontadas EXPLICITAMENTE para o mesmo objeto, ou seja, 0 não é um objeto, e sim um primitivo, o Java5 é que faz o “boxing” automaticamente.
Se vc fizer y = x; então eles estarão apontando para o mesmo objeto.
se vc fizer x == y eles serão iguais pq o Java irá fazer o “unboxing”, e fará
0 == 0. Ou se vc fizer x.equals(y) será true pq eles são “meaningfully equal”. [/quote]

Esta parte eu já tinha entendido, sem dúvidas aqui. O que está me dando dor de cabeça é a primeira frase do texto, “In order to save memory”. Na primeira vez que li, conclui que a implementação do Tiger utilizava algum pool similar ao das Strings com os objetos do grupo citado pelo texto, mas agora vejo que não é exatamente isto o que o texto desejava transmitir. Então, pergunto: De que forma a memória é salva? Provavelmente não é algo que esteja relacionado com a certificação, mas ainda é pertinente na minha opinião. Grato por qualquer ajuda.

Waconek