|
View:
New views
2 Messages
—
Rating Filter:
Alert me
|
|
|
Explicação sobre autoboxing - Muito interessantePessoal,
Bom dia, em meus estudos para certificação nessa manhã chuvosa de sábado, me deparei com algo que não entendi muito bem. No livro da Kathy Sierra para certificação SCJP( versão em português), na página 135, já no final da página cita uma caracteristica interessante sobre autoboxing que eu gostaria que de algumas explicações maiores pois não entendi muito bem o "por que" disso: veja: Integer i1 = 127; Integer i2 = 127; System.out.println(i1 == i2); // Imprime true System.out.println(i1 != i2); // Imprime false Mas se alterar o valor para 128 a coisa muda: Integer i1 = 128; Integer i2 = 128; System.out.println(i1 == i2); // Imprime false System.out.println(i1 != i2); // Imprime true A explicação do livro é: "Para economizar memória, duas intancias dos seguintes objetos wrapper serão sempre == quando seus valores primitivos forem o mesmo" Ai ele cita os tipos Boolean, Byte, Character (de \u0000 até \u007f), Short e Integer de -128 até 127. Pessoal, não entendi o por que ele faz isso, e já que faz, por que esse limite de valores? Desculpe tanto "por que" pessoal, é que realmente isso me deixou muito curioso, alguém tem ai uma explicação interessante? Sds, Fabrício Entringer Moreira -- Fabrício Entringer Moreira |
|
|
Re: Explicação sobre autoboxing - Muito interessanteIsso foi discutido aqui há um tempo atrás:
https://rsjug.dev.java.net/servlets/ReadMsg?list=java-l&msgNo=7477 Resumo: auto-boxing de integers equivale a Integer.valueOf(int): http://java.sun.com/javase/6/docs/api/java/lang/Integer.html#valueOf(int ao invés de new Integer(int). O limite de valores é pelo mesmo motivo que um cache de disco em memória não é do mesmo tamanho do disco. E o número é arbitrário, e uma outra implementação da biblioteca de classes do Java pode muito bem se comportar diferentemente (por exemplo, sempre retornar objetos diferentes, ou ter um número menor ou maior de instâncias pré-criadas, ou fazer um cache dos N objetos mais usados, etc). Falou, Rafael http://abstratt.com/blog/ Fabrício E. Moreira wrote: > Pessoal, > > Bom dia, em meus estudos para certificação nessa manhã chuvosa de > sábado, me deparei com algo que não entendi muito bem. > No livro da Kathy Sierra para certificação SCJP( versão em português), > na página 135, já no final da página cita uma caracteristica > interessante sobre autoboxing que eu gostaria que de algumas explicações > maiores pois não entendi muito bem o "por que" disso: > veja: > > Integer i1 = 127; > Integer i2 = 127; > > System.out.println(i1 == i2); // Imprime true > System.out.println(i1 != i2); // Imprime false > > Mas se alterar o valor para 128 a coisa muda: > > Integer i1 = 128; > Integer i2 = 128; > > System.out.println(i1 == i2); // Imprime false > System.out.println(i1 != i2); // Imprime true > > A explicação do livro é: "Para economizar memória, duas intancias dos > seguintes objetos wrapper serão sempre == quando seus valores primitivos > forem o mesmo" Ai ele cita os tipos Boolean, Byte, Character (de \u0000 > até \u007f), Short e Integer de -128 até 127. > > Pessoal, não entendi o por que ele faz isso, e já que faz, por que esse > limite de valores? > > Desculpe tanto "por que" pessoal, é que realmente isso me deixou muito > curioso, alguém tem ai uma explicação interessante? > > Sds, > Fabrício Entringer Moreira > > > -- > Fabrício Entringer Moreira --------------------------------------------------------------------- To unsubscribe, e-mail: java-l-unsubscribe@... For additional commands, e-mail: java-l-help@... |
| Free Forum Powered by Nabble | Forum Help |