java数组转字符串需避免打印对象哈希值,应使用arrays.tostring()(一维数组标准格式)、string.join()(string[]自定义分隔符)、arrays.deeptostring()(多维数组递归展开)或stringbuilder/stream(高级自定义格式)。

Java 中数组转字符串并格式化输出,核心是避免直接打印数组对象(否则会输出类似 [Ljava.lang.String;@1b6d3586 这样的哈希值),而应使用合适的方法将元素展开、拼接、美化。
用 Arrays.toString() 快速转为标准格式
这是最常用、最安全的方式,适用于一维数组(包括基本类型和引用类型):
- 对
int[]、String[]、Object[]等都有效 - 自动添加方括号
[],元素间用英文逗号加空格分隔 - 内部已处理
null,不会抛出异常
示例:
System.out.println(Arrays.toString(arr));
// 输出:[apple, banana, cherry]
用 String.join() 自定义分隔符
适合字符串数组,可自由指定分隔符,不带括号,更简洁:
- 仅支持
String[],其他类型需先转换为字符串数组 - 分隔符可以是任意字符串,如逗号、顿号、换行符等
- 若数组含
null,会抛出NullPointerException,需提前处理
示例:
String[] arr = {"a", "b", "c"};System.out.println(String.join(" | ", arr));
// 输出:a | b | c
用 Arrays.deepToString() 处理多维数组
当数组嵌套(如 int[][]、String[][])时,toString() 无法正确展开,必须用 deepToString():
- 递归遍历每一层,生成嵌套结构的可读字符串
- 同样带方括号,内层数组也用
[]表示 - 对
null元素显示为null,不会崩溃
示例:
int[][] matrix = {{1, 2}, {3, 4}};System.out.println(Arrays.deepToString(matrix));
// 输出:[[1, 2], [3, 4]]
用 StringBuilder 或 Stream 自定义格式(高级控制)
需要更灵活控制(如前缀、后缀、条件过滤、换行缩进等)时,可手动拼接:
- 用
StringBuilder遍历数组,逐个 append 并插入格式字符 - 用
Stream+Collectors.joining()支持映射、过滤、排序后再拼接 - 适合复杂场景,比如只输出非空字符串、每行一个元素、加序号等
示例(每行一个):
String[] arr = {"x", "y", "z"};String result = Arrays.stream(arr)
.collect(Collectors.joining("\n", "[\n ", "\n]"));
System.out.print(result);
// 输出:
// [
// x
// y
// z
// ]
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











