- 获取字符的 ASCII (或 Unicode) 编码值 (最常见)
- 将字符 '0' 到 '9' 转换为对应的数字 0 到 9
获取字符的 Unicode 编码值 (直接强制类型转换)
这是最直接、最常用的方法,在 Java 中,char 类型本质上是 16 位的无符号整数,它使用的是 UTF-16 编码,代表了 Unicode 字集中的字符,你可以直接将 char 强制转换为 int,得到的就是该字符对应的 Unicode 码点(code point)。

(图片来源网络,侵删)
语法
int intValue = (int) charValue;
示例代码
public class CharToIntExample {
public static void main(String[] args) {
char ch1 = 'A';
char ch2 = 'a';
char ch3 = '0'; // 字符 '0'
char ch4 = '中'; // 一个中文字符
char ch5 = '$';
// 将 char 强制转换为 int
int int1 = (int) ch1;
int int2 = (int) ch2;
int int3 = (int) ch3;
int int4 = (int) ch4;
int int5 = (int) ch5;
System.out.println("字符 '" + ch1 + "' 的 Unicode 编码是: " + int1); // 输出: 65
System.out.println("字符 '" + ch2 + "' 的 Unicode 编码是: " + int2); // 输出: 97
System.out.println("字符 '" + ch3 + "' 的 Unicode 编码是: " + int3); // 输出: 48
System.out.println("字符 '" + ch4 + "' 的 Unicode 编码是: " + int4); // 输出: 20013
System.out.println("字符 '" + ch5 + "' 的 Unicode 编码是: " + int5); // 输出: 36
}
}
解释:
'A'的 Unicode 编码是 65。'a'的 Unicode 编码是 97。'0'的 Unicode 编码是 48,而不是数字 0,这一点非常重要,也是初学者常犯的错误。'中'的 Unicode 编码是 20013。- 的 Unicode 编码是 36。
将数字字符转换为对应的整数值
当你有一个代表数字的字符(如 '5'),并且你希望得到它对应的整数值 5 时,不能直接使用强制类型转换,你需要进行数学运算。
原理
在 ASCII 和 Unicode 编码表中,数字字符 '0' 到 '9' 的编码是连续的。'0' 的编码是 48,'1' 是 49,...,'9' 是 57。
任何一个数字字符减去字符 '0',就能得到它对应的数值。
语法
int number = charValue - '0';
示例代码
public class CharDigitToIntExample {
public static void main(String[] args) {
char digitChar = '7';
// 错误的方式:这会得到字符 '7' 的 Unicode 编码 55
int wrongWay = (int) digitChar;
System.out.println("强制转换得到: " + wrongWay); // 输出: 55
// 正确的方式:通过减去 '0' 来得到数字 7
int correctWay = digitChar - '0';
System.out.println("减去 '0' 得到: " + correctWay); // 输出: 7
// 另一个例子
char anotherChar = '3';
int number = anotherChar - '0';
System.out.println("字符 '" + anotherChar + "' 转换为数字是: " + number); // 输出: 3
}
}
总结与最佳实践
| 转换目标 | 方法 | 代码示例 | 输出 (当 ch='A') |
|---|---|---|---|
| 获取字符的编码值 | 强制类型转换 | int val = (int) ch; |
65 |
| 获取字符的编码值 | 使用 Character.getNumericValue() |
int val = Character.getNumericValue(ch); |
65 (或 -1 对于非数字字符) |
| 将数字字符转数字 | 数学减法 | int num = ch - '0'; |
ch='A',会得到 65-48=17 (通常不是你想要的) |
| 将数字字符转数字 | 使用 Character.getNumericValue() |
int num = Character.getNumericValue(ch); |
10 (对于 'A') 或 -1 (对于非数字字符) |
| 将数字字符转数字 | 使用 Character.digit() |
int num = Character.digit(ch, 10); |
-1 (对于 'A') |
核心要点:

(图片来源网络,侵删)
- 明确你的目的:你是想得到字符的内部编码,还是想把它当作一个数字来处理?
- 获取编码:如果目的是获取编码值,使用
(int) ch是最快、最直接的方式。 - 转换数字字符:如果目的是将
'5'变成5,必须使用ch - '0',这是最标准、最安全的方法。 Character类方法:Character.getNumericValue(char ch):这个方法很智能,它会尝试将字符转换为其数值,对于数字字符'0'-'9',它返回 0-9,对于十六进制字母'a'-'f'或'A'-'F',它返回 10-15,对于其他字符,返回 -1。Character.digit(char ch, int radix):类似于getNumericValue,但它可以指定进制(radix)。Character.digit('A', 16)会返回10。
对于初学者来说,记住以下两点就足够了:
- 想看字符在电脑里存的号码是什么? ->
(int) 'A' - 想把字符 '9' 变成数字 9? ->
'9' - '0'

(图片来源网络,侵删)
