Maison  >  Article  >  Java  >  Pourquoi les valeurs entières en dehors de la plage -128 à 127 se comportent-elles différemment dans le pool de constantes Java ?

Pourquoi les valeurs entières en dehors de la plage -128 à 127 se comportent-elles différemment dans le pool de constantes Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 04:16:03384parcourir

Why Do Integer Values Outside the Range -128 to 127 Behave Differently in Java's Constant Pool?

Pourquoi le comportement du pool de constantes entières diffère après 127

Le pool de constantes pour les nombres en Java diffère de celui des chaînes. Alors que seules les constantes de compilation sont internées pour les chaînes, toute opération de boxe implique le pool pour les types wrapper d'entiers.

Par exemple :

int x = 10;
int y = x + 1;
Integer z = y; // Not a compile-time constant
Integer constant = 11;
System.out.println(z == constant); // true

Le JLS garantit une petite plage de valeurs regroupées. , les implémentations ayant la possibilité d'utiliser une plage plus large.

En pratique, la plupart des implémentations utilisent Integer.valueOf pour les opérations de boxe, ce qui conduit au comportement suivant :

Integer x = Integer.valueOf(100);
Integer y = Integer.valueOf(100);
System.out.println(x == y); // true

Selon la section JLS 5.1.7 :

Les valeurs comprises entre -128 et 127 produiront toujours des références identiques lorsqu'elles seront encadrées. Il s'agit d'un compromis pratique qui garantit que les valeurs communes sont toujours indiscernables.

Cependant, le comportement change pour les valeurs en dehors de cette plage. Pour des raisons d'efficacité, les implémentations peuvent ne pas supposer de références partagées pour ces valeurs.

Cela garantit le comportement souhaité dans la plupart des situations sans impact significatif sur les performances. Les implémentations à mémoire limitée peuvent étendre la mise en cache pour couvrir une plage de valeurs plus large.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn