Java中char类型占2字节,取值范围0到65535,用于存储BMP平面Unicode字符;声明须用单引号,支持'\uXXXX'转义;可参与整数运算;无法直接表示增补字符(如?),需用String或codePoint API处理。

Java 中的 char 类型专门用于存储单个 Unicode 字符,它占 2 个字节(16 位),取值范围是 '\u0000'(即 0)到 '\uffff'(即 65535),能表示包括中文、日文、emoji 等在内的基本 Unicode 字符(BMP 平面)。
如何声明和初始化 char 变量
必须用单引号 '' 包裹单个字符,不能用双引号(那是 String)或不加引号(会被当作变量名):
-
正确写法:
char c = 'A';、char ch = '中';、char emoji = '\u2605'; // ★ 星号 -
错误写法:
char c = "A";(字符串)、char c = A;(未定义变量)、char c = 'ab';(两个字符)
char 支持 Unicode 表示方式
除了直接输入可见字符,还可以用 Unicode 转义序列(\uXXXX)表示任意 BMP 字符:
char heart = '\u2665'; // ♥char snowman = '\u2603'; // ☃char alpha = '\u03B1'; // α(希腊字母)
注意:Unicode 转义必须是 4 位十六进制数,不足补零,如 '\u0041' 等价于 'A'。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
char 可参与整数运算(因本质是无符号 16 位整数)
Java 把 char 当作数值类型处理,可与 int 等整数类型混合计算,结果自动提升为 int:
-
char c = 'a';int code = c + 0; // 得到 97('a' 的 Unicode 码点) char next = (char)('A' + 1); // 结果是 'B',注意强制转换System.out.println('0' + 1); // 输出 49,不是 '1' —— 因为是 int 运算
char 不能直接表示增补字符(如部分 emoji)
像 ?(U+1F994)这类超出 BMP(> U+FFFF)的字符,在 Java 中需用 String 或 codePoint 相关 API 处理:
-
char只能存一个 UTF-16 code unit,而 ? 在 UTF-16 中由两个 char(代理对:high-surrogate + low-surrogate)组成 - 安全做法:
String s = "\uD83E\uDD94";或String.valueOf(Character.toChars(0x1F994)); - 若需遍历完整字符,用
String.codePoints()而非toCharArray()

















