Java : 文字'X'を整数Xに変換する(Character.getNumericValueほか)
※自分用学習メモです
char を整数に変換したい場合には、Character.getNumericValue() または Character.digit() を使用するか、char を int にキャストする必要があります。
1. Character.getNumericValue()
このメソッドは、指定された文字に対応する整数値を返します。
文字が数字 ('0'~'9') であれば、その数値(0~9)を返します。
アルファベット ('A'~'Z' または 'a'~'z') はそれぞれに対応する値を返します(例: 'A' → 10, 'B' → 11 など)。
数値に変換できない場合は、-1 を返します。
public class Main {
public static void main(String[] args) {
char ch1 = '5';
char ch2 = 'A';
char ch3 = 'z';
char ch4 = '#'; // 数字やアルファベットでない文字
int num1 = Character.getNumericValue(ch1); // 5
int num2 = Character.getNumericValue(ch2); // 10 (Aは10を意味)
int num3 = Character.getNumericValue(ch3); // 35 (zは35を意味)
int num4 = Character.getNumericValue(ch4); // -1 (変換不可)
System.out.println("Character.getNumericValue('5'): " + num1);
System.out.println("Character.getNumericValue('A'): " + num2);
System.out.println("Character.getNumericValue('z'): " + num3);
System.out.println("Character.getNumericValue('#'): " + num4);
}
}
2. Character.digit()
このメソッドは、指定された基数(radix, 2~36)に基づいて、与えられた文字の数値を返します。
基数(radix)が指定されるため、2進数、16進数など異なる基数での変換に対応しています。
数値に変換できない場合は、-1 を返します。
public class Main {
public static void main(String[] args) {
char ch1 = '5';
char ch2 = 'A';
char ch3 = 'f';
char ch4 = '9';
char ch5 = 'G'; // 'G'は16進数として無効
int num1 = Character.digit(ch1, 10); // 10進数の '5' → 5
int num2 = Character.digit(ch2, 16); // 16進数の 'A' → 10
int num3 = Character.digit(ch3, 16); // 16進数の 'f' → 15
int num4 = Character.digit(ch4, 8); // 8進数の '9' → -1 (8進数では無効)
int num5 = Character.digit(ch5, 16); // 16進数の 'G' → -1 (Gは16進数に含まれない)
System.out.println("Character.digit('5', 10): " + num1);
System.out.println("Character.digit('A', 16): " + num2);
System.out.println("Character.digit('f', 16): " + num3);
System.out.println("Character.digit('9', 8): " + num4);
System.out.println("Character.digit('G', 16): " + num5);
}
}
Character.getNumericValue() と Character.digit() の違い
基数の指定: Character.digit() では基数を指定できますが、Character.getNumericValue() は常に10進数またはそれに準じた変換を行います。
変換の範囲: Character.getNumericValue() は幅広い文字(アルファベットや日本語など)を数値に変換しますが、Character.digit() は指定された基数に対応する文字だけを扱います。
戻り値: 両方のメソッドとも変換できない場合は -1 を返します。
まとめ
Character.getNumericValue(char c): 文字の数値を取得する汎用的な方法。
Character.digit(char c, int radix): 指定した基数に基づいて文字の数値を取得する方法。
この記事が気に入ったらサポートをしてみませんか?