Maison > Java > javaDidacticiel > Pourquoi « 0123 » imprime-t-il « 83 » en Java, mais « 123 » imprime « 123 » ?

Pourquoi « 0123 » imprime-t-il « 83 » en Java, mais « 123 » imprime « 123 » ?

DDD
Libérer: 2024-12-27 13:13:16
original
332 Les gens l'ont consulté

Why Does `0123` Print `83` in Java, But `123` Prints `123`?

Comportement déroutant des littéraux entiers avec des zéros non significatifs

En Java, les littéraux entiers avec des zéros non significatifs présentent un comportement inattendu, comme l'illustre le code suivant extraits :

System.out.println(0123); // Prints 83
System.out.println(123);  // Prints 123
Copier après la connexion

Raison du Différence

La clé pour comprendre cette différence réside dans la représentation octale. Un zéro non significatif dans un littéral entier indique que le littéral est exprimé en base 8 (octal). En octal, chaque chiffre représente une puissance de 8, à partir de 0.

Ainsi, le littéral 0123 peut être converti en décimal comme suit :

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

En revanche, le littéral 123 est interprété en décimal, où chaque chiffre représente une puissance de 10. Par conséquent, il est évalué à 123.

Litéraux hexadécimaux

En plus de l'octal, Java prend également en charge les littéraux hexadécimaux (base 16) en utilisant le préfixe 0x. Par exemple, 0xFF représente le nombre hexadécimal 255, qui est égal à 11111111 en binaire.

Recommandation

Pour éviter toute confusion, il est conseillé d'omettre les zéros non significatifs des nombres entiers littéraux à moins que la représentation octale ne soit explicitement prévue. Sinon, le littéral sera mal interprété comme octal, conduisant à des résultats inattendus.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal