Ho letto ovunque che quando si definisce un numero intero compreso tra -128 e 127 in Java, invece di creare un nuovo oggetto restituisce un oggetto già creato.Pool intero Java. Perché?
Non vedo nessun altro modo di farlo se non quello di consentire ai programmatori principianti di confrontare gli oggetti interi con ==
per vedere se sono lo stesso numero, ma penso che questo sia sbagliato perché sicuramente pensano di poter confrontare qualsiasi numero intero con ==
e insegna anche una cattiva pratica in qualsiasi linguaggio di programmazione: confrontare il contenuto di due oggetti "diversi" con ==
.
C'è qualche altra ragione sul perché questo è fatto? O è solo una brutta decisione quando si progetta il linguaggio (secondo me) come il punto e virgola opzionale in JavaScript?
EDIT: Vedo qui che spiegano il comportamento: Why does the behavior of the Integer constant pool change at 127?
sto chiedendo il motivo per cui è progettata per avere questo comportamento, e non perché sta succedendo questo comportamento.
Sembra un po 'inutile allocare nuovi oggetti e occupare memoria quando sono comunque immutabili e possono essere condivisi. –
Forse l'ottimizzazione della memoria è una risposta, non ci pensare. –
Risparmia memoria, è molto più veloce e riduce la pressione sul garbage collector. Riusare gli oggetti può essere molto più veloce e alcune opzioni aumentano la dimensione della cache Integer a 10.000 o 20.000 per questo motivo. –