杰瑞科技汇

Java中char数组转String的3种方法及区别?

构造函数

最直接、最基本的方法就是使用 String 类的构造函数,它专门接受一个 char 数组作为参数。

Java中char数组转String的3种方法及区别?-图1
(图片来源网络,侵删)

使用 String(char[] value) 构造函数

这是最直接的方式,它会创建一个新的 String 对象,其内容是 char 数组的完整拷贝。

语法:

String str = new String(charArray);

示例代码:

public class CharArrayToString {
    public static void main(String[] args) {
        char[] charArray = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'};
        // 使用 String 构造函数
        String str = new String(charArray);
        System.out.println("转换后的字符串: " + str);
        System.out.println("原始 char 数组: " + java.util.Arrays.toString(charArray));
    }
}

输出:

Java中char数组转String的3种方法及区别?-图2
(图片来源网络,侵删)
转换后的字符串: Hello World
原始 char 数组: [H, e, l, l, o,  , W, o, r, l, d]

其他常用方法

除了构造函数,String 类和 java.util.Arrays 类还提供了一些其他便捷的方法。

使用 String.valueOf(char[] data) 静态方法

这个方法的功能和构造函数几乎完全一样,都是将整个 char 数组转换成 String,它通常被认为是更简洁的写法。

语法:

String str = String.valueOf(charArray);

示例代码:

Java中char数组转String的3种方法及区别?-图3
(图片来源网络,侵删)
public class CharArrayToStringValueOf {
    public static void main(String[] args) {
        char[] charArray = {'J', 'a', 'v', 'a'};
        // 使用 String.valueOf 静态方法
        String str = String.valueOf(charArray);
        System.out.println("转换后的字符串: " + str);
    }
}

输出:

转换后的字符串: Java

使用 java.util.Arrays.toString(char[] a) (不推荐用于转换)

这个方法不能用来将 char 数组转换为你期望的字符串,它会返回一个代表该数组的字符串,包括方括号和逗号。

示例代码 (演示其“错误”用法):

public class CharArrayToStringWrong {
    public static void main(String[] args) {
        char[] charArray = {'J', 'a', 'v', 'a'};
        // 错误用法:这不会得到 "Java"
        String str = java.util.Arrays.toString(charArray);
        System.out.println("错误转换后的字符串: " + str);
    }
}

输出:

错误转换后的字符串: [J, a, v, a]

当你的目标是得到 char 数组所表示的文本内容时,请绝对不要使用 Arrays.toString(),这个方法主要用于调试和日志打印,以查看数组的内容。


高级用法:转换数组的一部分

如果你想只转换 char 数组中的某一部分,可以使用带偏移量和长度的构造函数或 valueOf 方法。

语法:

// 构造函数
String str = new String(charArray, offset, count);
// valueOf 方法
String str = String.valueOf(charArray, offset, count);
  • offset: 开始转换的索引(从0开始)。
  • count: 要转换的字符数量。

示例代码:

public class CharArraySubstring {
    public static void main(String[] args) {
        char[] charArray = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'};
        // 只转换从索引 6 开始的 5 个字符
        String subStr = new String(charArray, 6, 5);
        System.out.println("转换后的子字符串: " + subStr); // 输出 "World"
    }
}

性能与选择建议

方法 描述 推荐度 备注
new String(charArray) 使用 String 类的构造函数。 ⭐⭐⭐⭐ 最标准、最直接的方法,清晰明了,是大多数情况下的首选。
String.valueOf(charArray) 使用 String 类的静态方法。 ⭐⭐⭐⭐⭐ 功能与构造函数相同,但代码更简洁,许多开发者更喜欢这种写法。
Arrays.toString(charArray) 返回数组的字符串表示形式(如 [a, b, c])。 绝对不要用于将字符数组内容转为字符串,仅用于调试。
  • 对于绝大多数情况,直接使用 String.valueOf(charArray) 是最简洁、最推荐的写法。
  • 如果你更喜欢面向对象的方式,或者需要调用带偏移量的构造函数,使用 new String(charArray) 完全没有问题。
  • 请务必记住 Arrays.toString() 的陷阱,避免在需要转换内容时误用它。
分享:
扫描分享到社交APP
上一篇
下一篇