Arrays.deepToString() 是 Java 中递归打印多维数组的工具方法,支持任意维度原始类型、对象及混合嵌套数组,但自定义类未重写 toString() 时仍显示哈希值;输出为紧凑单行字符串,适合快速调试。

Arrays.deepToString() 是 Java 中专门用于递归打印多维数组(包括嵌套的 Object 数组)的工具方法,能自动展开每一层,避免 toString() 只显示哈希码的尴尬,是调试多维结构最简洁有效的手段。
适用场景:哪些数组能用 deepToString?
它支持任意维度的原始类型数组(int[][], double[][][] 等)和对象数组(String[][], Object[][][]),甚至混合嵌套(如 Object[] 中含 int[] 和 String[])。但不适用于自定义类未重写 toString() 的情况——此时仍会打印类名+哈希值。
基本用法:一行代码展开所有层级
直接传入数组引用即可,无需手动循环:
-
二维 int 数组:
System.out.println(Arrays.deepToString(new int[][]{{1,2}, {3,4,5}}));→ 输出:[[1, 2], [3, 4, 5]] -
三维 String 数组:
System.out.println(Arrays.deepToString(new String[][][]{ {{"a"},{"b"}}, {{"c"}} }));→ 输出:[[["a"], ["b"]], [["c"]]] -
混合嵌套 Object 数组:
Object[] mixed = {new int[]{1,2}, Arrays.asList("x","y")}; System.out.println(Arrays.deepToString(mixed));→ 输出:[[1, 2], [x, y]]
调试技巧:结合日志与条件输出
在复杂逻辑中,可封装为带标签的调试方法,避免重复写 Arrays.deepToString:
- 快速标注:用字符串拼接添加上下文,例如
System.out.println("输入矩阵: " + Arrays.deepToString(matrix)); - 空值防护:若数组可能为
null,先判空再调用,否则抛NullPointerException - 大数组截断:对超长数组,可先用
Arrays.copyOf截取前 N 项再打印,防止日志刷屏
注意点:它不是万能的可视化方案
deepToString 生成的是紧凑的单行字符串,适合控制台快速查看结构,但对深层嵌套或大数据量可读性较差。如需格式化缩进、高亮或交互式展开,应配合 IDE 调试器视图,或使用 JSON 序列化(如 Gson)转为分段可读格式。


















