Java数组转字符串的多种实现方式
在Java开发中,数组与字符串之间的转换是常见操作,无论是日志记录、数据传输还是结果展示,将数组内容以字符串形式呈现都十分必要,本文将详细介绍Java数组转字符串的多种方法,包括原生API、第三方库及手动实现,并分析各自的适用场景与注意事项。

使用Arrays.toString()方法
Java标准库提供了java.util.Arrays工具类,其中的toString()方法是最简单的数组转字符串方案,该方法适用于一维数组,能直接返回包含数组元素的字符串表示形式,格式为"[元素1, 元素2, ...]"。
示例代码:
int[] arr = {1, 2, 3};
String str = Arrays.toString(arr);
System.out.println(str); // 输出: [1, 2, 3]
注意事项:
- 此方法仅适用于一维数组,若用于二维数组,输出结果为类似
"[[I@1b6d3586]"的地址值,而非实际元素。 - 若数组元素为对象,会调用其
toString()方法,需确保对象已正确重写该方法。
处理多维数组:Arrays.deepToString()
对于多维数组,需使用Arrays.deepToString()方法递归处理嵌套数组,生成包含所有层级的字符串表示。
示例代码:
int[][] matrix = {{1, 2}, {3, 4}};
String str = Arrays.deepToString(matrix);
System.out.println(str); // 输出: [[1, 2], [3, 4]]
适用场景:
- 二维及以上数组转换。
- 数组元素为引用类型且需展示嵌套结构时。
手动遍历拼接字符串
若需自定义字符串格式(如去除方括号、添加分隔符),可通过循环遍历数组手动拼接。

示例代码:
String[] arr = {"apple", "banana", "cherry"};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]);
if (i < arr.length - 1) {
sb.append(", ");
}
}
String str = sb.toString();
System.out.println(str); // 输出: apple, banana, cherry
优化建议:
- 使用
StringBuilder而非String直接拼接,避免频繁创建对象导致的性能问题。 - 通过
String.join()方法(Java 8+)可更简洁地实现分隔符拼接:String str = String.join(", ", arr);
使用第三方库:Apache Commons Lang
若项目已引入Apache Commons Lang库,其StringUtils类提供了更灵活的数组转字符串方法。
示例代码:
String[] arr = {"a", "b", "c"};
String str = StringUtils.join(arr, "-");
System.out.println(str); // 输出: a-b-c
优势:
- 支持自定义分隔符、前缀、后缀等。
- 可处理
null数组或元素,避免空指针异常。
处理对象数组与自定义格式
当数组元素为自定义对象时,需结合Arrays.stream()与Collectors.joining()实现格式化输出。
示例代码:

class Person {
private String name;
private int age;
// 构造方法、getter省略
@Override
public String toString() {
return name + "(" + age + ")";
}
}
Person[] people = {new Person("Alice", 25), new Person("Bob", 30)};
String str = Arrays.stream(people)
.map(Person::toString)
.collect(Collectors.joining(", "));
System.out.println(str); // 输出: Alice(25), Bob(30)
关键点:
- 确保对象类已重写
toString()方法。 - 通过Stream API可灵活处理过滤、映射等操作。
注意事项与最佳实践
- 性能考虑:
- 小型数组可直接使用
Arrays.toString(),大型数组或高频操作建议手动拼接或使用StringBuilder。
- 小型数组可直接使用
- 空数组与null处理:
- 调用
Arrays.toString(null)会抛出NullPointerException,需先判断数组是否为空。 - 可封装工具方法处理null值:
public static String arrayToString(Object[] arr) { return arr == null ? "null" : Arrays.toString(arr); }
- 调用
- 格式一致性:
在日志或API响应中,保持字符串格式统一,便于后续解析。
Java数组转字符串的方法多种多样,开发者可根据需求选择合适方案:
- 简单场景:优先使用
Arrays.toString()或Arrays.deepToString()。 - 自定义格式:通过
StringBuilder或String.join()手动拼接。 - 复杂对象:结合Stream API与
Collectors.joining()实现灵活转换。 - 企业级项目:引入Apache Commons Lang等库增强功能。
掌握这些方法不仅能提升代码效率,还能确保数据展示的准确性与可读性,为后续开发奠定良好基础。