char本质是16位无符号整数,可与int直接赋值或计算;转数字用自动提升,转字符需强制类型转换;注意'5'与"5"区别及范围校验。

char 在 Java 中本质是 16 位无符号整数(Unicode 码点),所以它和数字(尤其是 int)之间可以直接赋值或计算,不需要显式“转换”——底层就是同一套数值体系。
char 转成数字(获取 ASCII/Unicode 值)
直接把 char 当作 int 用即可,Java 会自动提升(widening conversion):
- char c = 'A';
int num = c; // num = 65 - char digit = '5';
int value = digit - '0'; // value = 5(常用技巧,适用于 '0'–'9') - 注意:不能直接用 Integer.parseInt("c"),那是解析字符串,不是处理 char
数字转成 char(得到对应字符)
用强制类型转换(cast),因为 int → char 是窄化(narrowing),需明确告知编译器:
- int code = 97;
char c = (char) code; // c = 'a' - int num = 7;
char digitChar = (char) ('0' + num); // digitChar = '7' - 超出 char 范围(0–65535)时会取低 16 位,可能得到意外字符,建议先校验
区分:char 和字符串数字的互转
容易混淆的是 单个字符 '5' 和 字符串 "5":
- '5' → int:直接赋值或减 '0';
"5" → int:用 Integer.parseInt("5") - int 5 → char:(char)('0' + 5);
int 5 → String:"5" + "" 或 String.valueOf(5)
常见误区提醒
- char c = 65; // 合法!等价于 char c = 'A';
- char c = 100000; // 编译报错:常量超出 char 范围(65535)
- char c = (char)100000; // 不报错,但结果是 100000 % 65536 = 34464 对应的字符(非预期)
- 避免用 == 比较 char 和字符串,比如 'a' == "a" 是语法错误
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











