
Envoyé par
thelvin
Eh ben Java utilise un petit truc : il garde de côté, en permanence, 256 objets Integer, correspondant aux 256 valeurs les plus proches de zéro : de -128 à 127. Du coup, quand tu construits un Integer sans new, si l'Integer a l'une des valeurs en question, il va juste te donner l'objet qu'il a pour ça. Et il te donnera toujours ce même objet.
Mais il ne peut pas faire comme ça avec toutes les valeurs possibles de int, et c'est compliqué de "garder de côté" des valeurs déjà créées. Alors si la valeur demandée n'est pas de -128 à 127, il crée juste un nouvel objet avec la valeur voulue, sans se poser de question. Note que Java n'est pas obligé de faire ça. Si un jour Java trouve un moyen efficace de réutiliser des objets Integer de valeur connue, alors il aura parfaitement le droit de le faire. Tu ne peux pas compter sur le fait qu'il ne le fait pas. Mais à ce jour, ce n'est pas le cas.
Partager