Maison > Java > javaDidacticiel > Pourquoi mon code Java convertit-il un entier en un caractère non imprimable ?

Pourquoi mon code Java convertit-il un entier en un caractère non imprimable ?

Susan Sarandon
Libérer: 2024-11-10 03:07:02
original
1031 Les gens l'ont consulté

Why Does My Java Code Convert an Integer to an Unprintable Character?

Conversion d'entier en caractère en Java : une comparaison

Comprendre les conversions de caractères et d'entiers en Java peut être délicat. Examinons les extraits de code suivants :

int a = 1;
char b = (char) a;
System.out.println(b);
Copier après la connexion

Il est prévu que ce code imprime le caractère « 1 ». Cependant, cela produit une sortie vide. Pour comprendre cela, nous devons approfondir le processus de conversion de type.

L'affectation char b = (char) a convertit l'entier a (qui est le chiffre 1) en caractère. Cette conversion stocke en fait le caractère avec le point de code Unicode correspondant à la valeur entière. Par exemple, le point de code Unicode pour « 1 » est 49, tandis que le point de code Unicode pour le caractère de début de titre est 1. Puisque l'entier a est 1, il est converti en caractère de début de titre, ce qui n'est pas imprimable.

En revanche, l'extrait de code suivant :

int a = '1';
char b = (char) a;
System.out.println(b);
Copier après la connexion

Produit le résultat attendu '1'. En effet, l'affectation int a = '1' initialise a avec la valeur ASCII de '1' (qui est 49) plutôt que la valeur entière 1.

Pour convertir un entier en caractère comme prévu dans le premier extrait, vous pouvez utiliser les approches suivantes :

  • Utilisez la méthode Character.forDigit() : Cela convertit un chiffre entre 0 et 9 en son caractère correspondant.

    int a = 1;
    char b = Character.forDigit(a, 10);
    System.out.println(b); // Prints '1'
    Copier après la connexion
  • Ajoutez 48 à l'entier et convertissez : Cette approche repose sur le fait que les points de code Unicode pour les chiffres sont 48 plus élevés que les valeurs des chiffres.

    int a = 1;
    char b = (char) (a + 48);
    System.out.println(b); // Prints '1'
    Copier après la connexion
  • Utilisez la méthode Character.toChars() : Cela convertit un point de code Unicode en son tableau de caractères correspondant.

    int a = 1;
    char[] b = Character.toChars(a);
    System.out.println(b[0]); // Prints '1'
    Copier après la connexion

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