在 Java 中,将 String 转换为 char[](字符数组)非常简单,可以使用 String 类的 toCharArray() 方法,以下是详细的说明和示例:

方法 1:toCharArray()(最常用)
toCharArray() 是 String 类的内置方法,直接将字符串转换为 char 数组。
语法
char[] charArray = str.toCharArray();
示例代码
public class StringToCharArray {
public static void main(String[] args) {
String str = "Hello, World!";
// 转换为 char 数组
char[] charArray = str.toCharArray();
// 遍历并打印字符
for (char c : charArray) {
System.out.println(c);
}
// 输出整个数组(直接打印会显示地址,需用 Arrays.toString)
System.out.println(Arrays.toString(charArray));
}
}
输出
H
e
l
l
o
,
W
o
r
l
d
!
[H, e, l, l, o, ,, , W, o, r, l, d, !]
方法 2:手动遍历(逐个字符赋值)
如果需要更灵活的控制(例如只转换部分字符),可以手动遍历字符串并填充数组。
示例代码
public class StringToCharArrayManual {
public static void main(String[] args) {
String str = "Java";
char[] charArray = new char[str.length()];
// 手动填充数组
for (int i = 0; i < str.length(); i++) {
charArray[i] = str.charAt(i);
}
System.out.println(Arrays.toString(charArray));
}
}
输出
[J, a, v, a]
注意事项
-
不可变性
String是不可变的,但char[]是可变的,修改charArray不会影响原字符串。char[] arr = "test".toCharArray(); arr[0] = 'T'; // 合法,但不会修改原字符串
-
性能
toCharArray()是高效的方法,底层直接复制字符数组,时间复杂度为 O(n)。
(图片来源网络,侵删) -
空字符串
如果字符串为空 ,toCharArray()会返回长度为 0 的数组[]。 -
Unicode 字符
对于包含代理对(如 emoji 或非 BMP 字符)的字符串,toCharArray()会正确处理每个 Unicode 码点。
| 方法 | 适用场景 | 特点 |
|---|---|---|
toCharArray() |
直接转换整个字符串 | 简单高效,推荐使用 |
| 手动遍历 | 需要部分转换或自定义逻辑 | 灵活但代码稍长 |
推荐优先使用 toCharArray(),除非有特殊需求。

