![Java 字符类型对比示意图]
在 Java 编程中,处理文本数据离不开 char、String、StringBuilder 和 StringBuffer。理解它们的设计哲学、底层实现和性能差异,是编写高效代码的关键。我们一步步来拆解这四大基石。
1. 一切的基础——char 原始类型
在深入字符串类之前,先看看最基础的单元:char。
1.1 定义与本质
char 是 Java 的原始数据类型,表示一个16 位 Unicode 字符。Java 从一开始就采用 Unicode,国际化支持是原生优势。
- 大小:16 位(2 字节),范围
0到65,535(\u0000到\uffff)。 - 无符号性:
char不能表示负数。
1.2 编码演变:从 char 到 byte
JDK 9 之前,String 内部用 char[] 存储。但很多应用主要使用 Latin-1 字符(英文、数字),只需 1 字节。为了节省内存,JDK 9 起改用 byte[] 数组,配合 coder 字段标识编码方式(LATIN1 或 UTF16)。这对开发者透明,逻辑上仍视为字符序列。
1.3 初始化与赋值
char 赋值很灵活,常见几种方式:
转义字符:
char c7 = '\n'; // 换行符
char c8 = '\''; // 单引号
char c9 = '\\'; // 反斜杠
Unicode 转义:
char c6 = '\u0041'; // 对应 'A'
整数编码值:
char c3 = 65; // 十进制 'A'
char ;
;


