
在 Java 编程里,处理文本离不开这四个基石:char、String、StringBuilder 和 StringBuffer。理解它们的设计哲学、底层实现以及性能差异,对写出高效健壮的代码至关重要。
第一章:一切的基础——char 原始类型
先别急着看复杂的类,字符串的最基本单元其实是 char。
1.1 定义与本质
char 是 Java 的原始数据类型(Primitive Type),表示一个单一的 16 位 Unicode 字符。Java 从一开始就拥抱 Unicode,这让国际化支持成了天生优势。
- 大小:16 位(2 字节),范围
0到65,535(\u0000到\uffff)。 - 无符号性:它不能表示负数。
1.2 字符编码的演变:从 char 到 byte
JDK 9 之前,String 内部用 char[] 存数据。但有个洞察很关键:大多数应用里的字符串主要是 Latin-1 字符集(英文、数字),只需 1 个字节。用 2 字节的 char 存,内存浪费了一半。
所以 JDK 9 开始,为了省内存,String(包括 StringBuilder 和 StringBuffer)底层改用了 byte[],加个 coder 字段标记是 LATIN1(1 字节)还是 UTF16(2 字节)。这对开发者透明,逻辑上我们还是当它是字符序列。
1.3 char 的初始化与赋值
赋值方式挺灵活,几种常见写法如下:
转义字符:特殊功能字符。
char c7 = '\n'; // 换行符
char c8 = '\''; // 单引号本身
char c9 = '\\'; // 反斜杠本身
Unicode 转义序列:\u 加 4 位十六进制。
char ;


