在 Java 中,数字字符(如 '0', '1' 等)的 ASCII 码是固定的。

数字字符的 ASCII 码从 48 (十进制) 开始,依次递增:
| 字符 | ASCII 码 (十进制) | ASCII 码 (十六进制) |
|---|---|---|
'0' |
48 | 0x30 |
'1' |
49 | 0x31 |
'2' |
50 | 0x32 |
'3' |
51 | 0x33 |
'4' |
52 | 0x34 |
'5' |
53 | 0x35 |
'6' |
54 | 0x36 |
'7' |
55 | 0x37 |
'8' |
56 | 0x38 |
'9' |
57 | 0x39 |
这个规律非常重要:一个数字字符的 ASCII 码 = 它的数值 + 48。
如何在 Java 中获取数字字符的 ASCII 码?
在 Java 中,char 类型本质上是 16 位的无符号整数,它可以直接表示一个 Unicode 字符,你可以非常方便地将一个 char 强制转换为 int 来获取其 ASCII 码(或更准确地说是 Unicode 码点,对于 ASCII 两者是相同的)。
方法 1:使用强制类型转换 (int)
这是最直接的方法。

public class AsciiExample {
public static void main(String[] args) {
char digit = '5';
// 将 char 强制转换为 int
int asciiCode = (int) digit;
System.out.println("字符: " + digit);
System.out.println("对应的 ASCII 码 (十进制): " + asciiCode); // 输出 53
System.out.println("对应的 ASCII 码 (十六进制): " + Integer.toHexString(asciiCode)); // 输出 35
}
}
方法 2:使用 Character.getNumericValue()
这个方法比较特殊,它返回的是字符所代表的数值,而不是 ASCII 码。
public class CharacterValueExample {
public static void main(String[] args) {
char digit = '5';
// 获取字符代表的数值
int numericValue = Character.getNumericValue(digit);
System.out.println("字符: " + digit);
System.out.println("字符代表的数值: " + numericValue); // 输出 5
System.out.println("ASCII 码: " + (int)digit); // 输出 53
}
}
方法 3:遍历并打印所有数字字符的 ASCII 码
如果你想验证所有数字字符的 ASCII 码,可以使用一个循环。
public class PrintAllDigitAscii {
public static void main(String[] args) {
System.out.println("数字字符及其对应的 ASCII 码:");
for (char c = '0'; c <= '9'; c++) {
System.out.println("字符 '" + c + "' -> ASCII 码: " + (int)c);
}
}
}
输出结果:
数字字符及其对应的 ASCII 码:
字符 '0' -> ASCII 码: 48
字符 '1' -> ASCII 码: 49
字符 '2' -> ASCII 码: 50
字符 '3' -> ASCII 码: 51
字符 '4' -> ASCII 码: 52
字符 '5' -> ASCII 码: 53
字符 '6' -> ASCII 码: 54
字符 '7' -> ASCII 码: 55
字符 '8' -> ASCII 码: 56
字符 '9' -> ASCII 码: 57
重要区分:数字字符 vs. 数字本身
这是初学者最容易混淆的地方。
- 数字字符 (
char):'5',它在内存中存储的是其 ASCII 码53。 - 数字本身 (
int,double等):5,它在内存中存储的就是整数值5。
如何将数字字符转换为数字?
如果你有一个字符 '5',想得到整数 5,不能直接转换,需要减去 '0' 的 ASCII 码。
public charToDigit {
public static void main(String[] args) {
char digitChar = '7';
// 错误的方式: (int)digitChar 会得到 55
// int wrongNumber = (int) digitChar;
// 正确的方式: 利用 ASCII 码的规律
int number = digitChar - '0'; // 55 - 48 = 7
System.out.println("字符: " + digitChar);
System.out.println("转换后的数字: " + number); // 输出 7
}
}
如何将数字转换为数字字符?
反过来,如果你有一个整数 9,想得到字符 '9',需要加上 '0' 的 ASCII 码。
public digitToChar {
public static void main(String[] args) {
int number = 9;
char digitChar = (char) (number + '0'); // 9 + 48 = 57,对应字符 '9'
System.out.println("数字: " + number);
System.out.println("转换后的字符: " + digitChar); // 输出 '9'
}
}
| 操作 | Java 代码 | 示例 ('5') |
|---|---|---|
| 获取字符的 ASCII 码 | (int) char_variable |
(int) '5' 结果是 53 |
| 将字符转为数字 | char_variable - '0' |
'5' - '0' 结果是 5 |
| 将数字转为字符 | (char) (number + '0') |
(char) (5 + '0') 结果是 '5' |
char 和 int 之间的转换是理解数字 ASCII 码的关键。char 是字符的表示,而 int (通过强制转换) 可以让你看到这个字符背后隐藏的编码值。
