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 サイトの他の関連記事を参照してください。