Maison > Java > javaDidacticiel > Pourquoi les zéros non significatifs dans les littéraux entiers Java changent-ils leur valeur ?

Pourquoi les zéros non significatifs dans les littéraux entiers Java changent-ils leur valeur ?

Barbara Streisand
Libérer: 2024-12-29 21:29:14
original
873 Les gens l'ont consulté

Why Do Leading Zeros in Java Integer Literals Change Their Value?

Interprétation des littéraux entiers avec des zéros non significatifs

Les littéraux entiers avec des zéros non significatifs peuvent se comporter de manière inattendue en Java, présentant une valeur numérique différente de celle de leurs homologues sans zéros non significatifs. Ce comportement découle de l'interprétation des zéros non significatifs comme préfixe de base.

Lorsqu'un littéral numérique est préfixé par un zéro, il est interprété comme un nombre octal (base 8). En effet, en notation octale, les nombres peuvent aller de 0 à 7. Ainsi, "0123" représente le nombre octal 123.

Pour convertir ce nombre octal en son équivalent décimal, chaque chiffre est multiplié par sa puissance correspondante sur 8 et les résultats sont additionnés. Pour "0123", ce calcul est :

(1 * 8 * 8) + (2 * 8) + (3) = 83
Copier après la connexion

Par conséquent, le code "System.out.println(0123)" imprime 83.

En revanche, "123" sans interligne zéro est interprété comme un nombre décimal. Le nombre décimal 123 est simplement la somme de ses chiffres (1 2 3), soit 123. Ainsi, "System.out.println(123)" imprime 123.

Évitez les erreurs d'interprétation

Pour éviter le comportement inattendu des zéros non significatifs dans les littéraux entiers, il est recommandé de toujours commencer nombres décimaux avec un chiffre différent de zéro. Si un littéral est destiné à être exprimé en base 10, il ne doit pas avoir de zéro non significatif.

Notations de base alternatives

Bien que l'octal ne soit plus couramment utilisé, Java fournit un moyen de spécifier des nombres hexadécimaux (base 16) en utilisant le préfixe « 0x ». Par exemple, "0x123" représente le nombre hexadécimal 123, qui équivaut au nombre décimal 291.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal