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
Susan Sarandonoriginal
2024-11-10 03:07:021030parcourir

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);

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);

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'
  • 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'
  • 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'

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