string可通过tochararray()转为char[],而char[]转string需用new string(chararray)或string.valueof(chararray),tochararray()不可逆。

Java 中字符串(String)和字符数组(char[])可以通过 toCharArray() 方法从字符串转为字符数组,但反过来——从字符数组生成字符串——不能用 toCharArray(),而要用 String 构造方法或静态工厂方法。
字符串 → 字符数组:用 toCharArray()
toCharArray() 是 String 类的实例方法,调用后返回一个**新创建的、内容相同**的 char[],原字符串不受影响。注意:返回的是副本,修改数组不会影响原字符串。
- 安全复制:适合需要修改字符内容的场景(比如反转、加密预处理)
-
不可变性保障:
String本身不可变,该方法不破坏这一特性 - 示例:
String s = "hello";<br> char[] chars = s.toCharArray(); // ['h', 'e', 'l', 'l', 'o']<br> chars[0] = 'H'; // 不会影响 s
字符数组 → 字符串:不用 toCharArray(),用构造方法
toCharArray() 是单向的,没有反向方法。要把 char[] 转成 String,有以下常用方式:
-
new String(charArray)—— 最直接,创建新字符串对象 -
String.valueOf(charArray)—— 推荐,内部复用缓存逻辑,更轻量 -
Arrays.toString(charArray)不适用 —— 它返回形如[h, e, l, l, o]的字符串,不是你想要的"hello" - 示例:
char[] data = {'j', 'a', 'v', 'a'};<br> String s1 = new String(data); // "java"<br> String s2 = String.valueOf(data); // "java"
注意事项与常见误区
-
toCharArray()每次都新建数组,频繁调用可能影响性能(尤其大字符串),可考虑复用或改用String.charAt(i)遍历 - 字符数组转字符串时,若数组含
'\u0000'(空字符),它会被正常包含;但若想截断到某个长度,需传入偏移量和长度:new String(chars, 0, len) - 不要试图对
String对象调用charArray.toString()—— 那会输出类似[C@1b6d3586的哈希值,不是内容
一句话总结转换关系
字符串能用 .toCharArray() 变成字符数组;字符数组要变回字符串,得用 new String(arr) 或 String.valueOf(arr),toCharArray() 在这一步不参与。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











