char本质是无符号16位整数,取值0–65535,运算时自动提升为int;需显式强转才能赋值回char,否则编译错误。

Java 中的字符类型(char)本质上是无符号 16 位整数,取值范围是 0 到 65535,对应 Unicode 码点。因此它可以直接参与算术运算,编译器会自动将其提升为 int 类型进行计算。
char 参与运算时自动提升为 int
Java 规定:当 char 与数值类型(如 int、short、byte 或另一个 char)做加减乘除等运算时,char 会被隐式转换为 int,结果也是 int 类型。
-
'a' + 1结果是98(因为'a'的 Unicode 值是 97) -
'A' + 32得到117,即小写'u'的码点(但注意这不是通用转小写方法,仅巧合) -
'Z' - 'A'结果是25,表示字母表中从 A 到 Z 的偏移量
运算后想得到 char,需要显式强制转换
如果希望把算术结果再存回 char 类型(比如计算下一个字符),必须手动强转,否则编译报错:
char c = 'a'; char next = (char)(c + 1); // 正确:得到 'b'char next = c + 1; // 编译错误:可能丢失精度(int → char)- 强转不检查范围,若结果超出
char范围(0–65535),会发生截断,例如(char)(65536)得到\u0000
常见用途和注意事项
利用 char 的整数特性,常用于大小写转换、字母位移、简单编码等场景,但要注意边界和可读性:
立即学习“Java免费学习笔记(深入)”;
- 大小写转换建议用
Character.toUpperCase()/toLowerCase(),更安全可靠 - 判断是否为小写字母可写
c >= 'a' && c ,比查 ASCII 表更直观 - 避免对非字母字符做假设性运算(如
'9' + 1是58,不是'0') - 中文字符、Emoji 等 Unicode 字符同样适用(如
'中' + 1得到下一个 Unicode 码点,但语义未必有意义)


















