Arrays.deepToString()能递归打印任意维度数组,支持二维及更高维数组、混合嵌套结构、含null元素或子数组的数组;仅适用于数组类型,不处理集合或自定义对象内部字段。

Java中Arrays.deepToString()是专门用于打印多维数组(包括嵌套数组)的便捷方法,它能递归遍历每一层,把所有元素以可读格式输出,避免了手动遍历和格式拼接的麻烦。
deepToString能处理哪些数组类型
该方法支持任意维度的数组,包括:
- 二维数组(如int[][]、String[][])
- 三维及以上数组(如double[][][])
- 混合嵌套结构(如Object[]中包含int[]、String[]甚至其他Object[])
- null元素或整个子数组为null的情况(会显示null,不会抛空指针异常)
基本用法与常见调用方式
直接传入数组对象即可,无需额外配置:
- 对二维数组:
System.out.println(Arrays.deepToString(matrix)); - 对Object类型的嵌套数组:
Object[] nested = {new int[]{1, 2}, new String[]{"a", "b"}};
System.out.println(Arrays.deepToString(nested)); // 输出: [[1, 2], [a, b]] - 含null子数组:
String[][] arr = {{"x"}, null, {"y", "z"}};
System.out.println(Arrays.deepToString(arr)); // 输出: [[x], null, [y, z]]
注意事项与典型陷阱
使用时需注意以下几点,否则可能得不到预期效果:
- 仅对数组有效——传入普通集合(如
List、Set)会调用toString(),结果不是深度展开 - 不适用于非数组的自定义对象——若数组元素是自定义类实例,
deepToString只调用其toString(),不会递归其内部字段 - 原始类型数组(如
int[])会被自动装箱处理,但输出仍是紧凑格式(如[1, 2, 3]),不是逐个对象展开 - 若想输出更清晰的换行缩进格式,需自行封装或结合JSON工具(如Gson),
deepToString本身只返回单行字符串
替代方案参考(当deepToString不够用时)
如果需要美化输出、支持自定义格式或处理复杂嵌套对象,可考虑:
立即学习“Java免费学习笔记(深入)”;
- 用
Gson或Jackson序列化为格式化JSON:new GsonBuilder().setPrettyPrinting().create().toJson(array) - 对
Object[]手动递归遍历+缩进拼接(适合教学或特殊格式需求) - 调试时配合IDE变量视图,比控制台打印更直观
不复杂但容易忽略:只要确保传入的是数组类型,deepToString就能可靠展开所有层级,是开发和调试阶段快速查看嵌套数据结构的首选工具。


















