Java中字符与整数互转本质是Unicode码点数值映射:char赋int得码值(如'7'→55),数字字符转整数需减'0'(如'7'→7),整数转char须在0~65535内强转。

在Java中,字符与整数的互转本质是利用char类型的底层是16位无符号整数(Unicode码点)这一特性。转换不是“解析字符串”,而是直接进行数值映射或类型强转,关键在于分清场景:是单个字符转对应ASCII/Unicode值,还是把数字字符(如'5')转成对应整数(如5)。
字符转整数:获取Unicode码值
直接将char赋值给int变量即可,Java自动拓宽(widening conversion),得到该字符的Unicode码点。
- 'A' → 65,'a' → 97,'0' → 48
- 代码示例:
char c = '7'; int num = c; // num = 55 - 这适用于所有字符,不只是数字;若想转成对应数字(如'7'→7),需额外减去'0'(见下文)
数字字符转对应整数:'0'~'9' → 0~9
因为数字字符在Unicode表中是连续排列的,'0'到'9'的码值依次为48~57,所以用ch - '0'可安全转为0~9的整数。
- 代码示例:
char ch = '3'; int digit = ch - '0'; // digit = 3 - 注意:此方法仅对'0'~'9'有效;传入'a'或空格会得到意外结果,建议先校验
Character.isDigit(ch) - 不推荐用
Integer.parseInt(String.valueOf(ch)),效率低且多余
整数转字符:仅适用于0~65535范围内的码点
使用强制类型转换(char)num,前提是num在char合法范围内(0~65535)。超出则截断低16位,可能得到乱码。
立即学习“Java免费学习笔记(深入)”;
- 代码示例:
int code = 65; char c = (char)code; // c = 'A' - 若想把整数0~9转成对应数字字符(如5→'5'),用
(char)('0' + num) - 不支持直接转字符串(如123→"123"),那属于字符串解析,应使用
String.valueOf()或Integer.toString()
基本上就这些。核心记两点:字符即数字,直接赋值得码点;数字字符转数字,记得减'0'。










