ホームページ  >  記事  >  Java  >  Java コードが整数を印刷不可能な文字に変換するのはなぜですか?

Java コードが整数を印刷不可能な文字に変換するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-10 03:07:021010ブラウズ

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

Java での整数から文字への変換: 比較

Java での文字と整数の変換を理解するのは難しい場合があります。次のコード スニペットを調べてみましょう:

int a = 1;
char b = (char) a;
System.out.println(b);

おそらく、このコードは文字「1」を出力するはずです。ただし、空の出力が生成されます。これを理解するには、型変換プロセスをさらに詳しく調べる必要があります。

代入 char b = (char) a は、整数 a (数値 1) を文字に変換します。この変換では、実際には、整数値に対応する Unicode コード ポイントを持つ文字が保存されます。たとえば、「1」の Unicode コード ポイントは 49 ですが、見出し開始文字の Unicode コード ポイントは 1 です。整数 a は 1 であるため、これは見出し開始文字に変換されます。

対照的に、次のコード スニペット:

int a = '1';
char b = (char) a;
System.out.println(b);

は、期待される出力 '1' を生成します。これは、代入 int a = '1' が整数値 1 ではなく ASCII 値 '1' (つまり 49) で a を初期化するためです。

最初のスニペットでは、次のアプローチを使用できます。

  • Character.forDigit() メソッド: これは、0 から 9 までの数字を対応する文字に変換します。

    int a = 1;
    char b = Character.forDigit(a, 10);
    System.out.println(b); // Prints '1'
  • 整数に 48 を加算してキャストします。 このアプローチは、数字の Unicode コード ポイントがその数字より 48 高いという事実に基づいています。

    int a = 1;
    char b = (char) (a + 48);
    System.out.println(b); // Prints '1'
  • Character.toChars() メソッドを使用します。 これにより、Unicode コード ポイントが対応する文字配列に変換されます。

    int a = 1;
    char[] b = Character.toChars(a);
    System.out.println(b[0]); // Prints '1'

以上がJava コードが整数を印刷不可能な文字に変換するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。