Les objets wrapper entiers partagent des instances dans la plage de -128 à 127
Le comportement des objets wrapper entiers partageant des instances dans une plage de valeurs spécifique se produit à partir de la spécification du langage Java (JLS). Selon JLS 5.1.7, les conversions de boxe pour certaines valeurs primitives donnent des références identiques :
Pour vrai, faux, octet, char (plage u0000 à u007f) et nombres entiers ou courts compris entre -128 et 127, le les objets wrapper créés à partir de ces valeurs seront toujours les mêmes.
Cette spécification permet une efficacité pragmatique tout en garantissant le comportement souhaité dans des scénarios typiques. La mise en cache de certaines valeurs communes en tant qu'objets permet de réduire la surcharge de mémoire lors des conversions de boxe. Cependant, l'implémentation peut décider de mettre en cache la totalité ou seulement un sous-ensemble des valeurs spécifiées, allant de -32 Ko à 32 Ko pour les valeurs char et courtes, ainsi que les valeurs int et longues.
Par conséquent, les objets wrapper entiers partagent le mêmes instances uniquement dans la plage de valeurs de -128 à 127 car elle est dictée par les spécifications du langage Java, visant à équilibrer l'efficacité de la mémoire et la prévisibilité des conversions de valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!