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?
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 =)
[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.