boa noite, gostaria de saber por que dois números inteiros iguais com valores menores que 127 ficam na mesma referencia, já se for 128 muda a referencia?
publicclassWraper{publicstaticvoidmain(String[]args){Integeri=127;Integeri2=127;if(i==i2)System.out.println("i e i2 estão na mesma referência");Integeri3=128;Integeri4=128;if(i3==i4)System.out.println("i3 e i4 estão na mesma referência");}}
Por que a Sun decidiu criar um cache com endereçamento de apenas 1 byte.
Como você sabe, um byte representa até 255 números. Portanto, o Java tem internamente um array de Integers que vai de -126 até 127, e reusa sempre esses valores quando necessário.
A razão para criar um cache desses é basicamente desempenho. Como são valores muito comuns, poupa-se processamento evitando cria-los e destruí-los o tempo todo.
ribclauport
Por que a Sun decidiu criar um cache com endereçamento de apenas 1 byte.
Como você sabe, um byte representa até 255 números. Portanto, o Java tem internamente um array de Integers que vai de -126 até 127, e reusa sempre esses valores quando necessário.
Viny, desculpe comentar um tópico antigo, mas fiquei com uma dúvida, estava vendo o post para revisar a questão sobre cache para a prova scjp, e me deparei com o range citado no seu post, gostaria de saber se está correto esse range, pois no livro e em outros lugares que vi consta o range de -128 = -2^7 até 127 já que o zero é reprentado também e ocupa um byte, e não [color=red]-126 [/color]até 127