java中char本质是0–65535的16位无符号整数,字符转unicode码点用int code = c;整数转字符用(char)code;数字字符'0'–'9'与数值互转应使用c-'0'和(char)(digit+'0')。

Java 中 char 类型本质是 16 位无符号整数(Unicode 码点),取值范围是 0 到 65535,因此字符与数字之间的转换本质上是 char 和 int(或其包装类)之间的类型转换,但需注意语义区别:是“字符对应的 Unicode 数值”,还是“字符表示的十进制数字(如 '0'→0)”。
获取字符的 Unicode 数值(字符 → 整数)
直接将 char 赋值给 int 变量即可,这是隐式类型提升,返回该字符在 Unicode 表中的码点值:
char c = 'A'; int code = c; // code = 65char c = '中'; int code = c; // code = 20013(UTF-16 基本平面码点)- 也可显式强制转换:
int code = (int) c;,效果相同
将数字转为对应 Unicode 字符(整数 → 字符)
用 (char) 强制转换一个合法的整数值(0–65535),得到该码点对应的字符:
int code = 97; char c = (char) code; // c = 'a'int code = 48; char c = (char) code; // c = '0'- 超出范围会截断(如
(char) 65536得到'\u0000'),使用前建议校验
字符 '0'–'9' 与对应数字 0–9 的互转(常用数字字符处理)
这是业务中最常见的需求,不能直接用上面的 Unicode 码点转换,而应利用 ASCII/Unicode 中数字字符连续排列的特性:
-
字符转数字:减去
'0'(即 48)char c = '7'; int digit = c - '0'; // digit = 7 -
数字转字符:加上
'0'int digit = 3; char c = (char) (digit + '0'); // c = '3' - 这种方式安全、高效,且不依赖具体编码值,因为
'0'到'9'在 Unicode 中是连续的
注意:避免混淆 char 与字符串数字
char 是单个字符,不是字符串。不要尝试用 Integer.parseInt("5") 处理 char,那属于过度设计:
- ❌ 错误:
int n = Integer.parseInt(String.valueOf('5'));—— 冗余且低效 - ✅ 正确(数字字符):
int n = '5' - '0'; - ✅ 正确(任意字符码点):
int n = '5'; // 53
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











