Arrays.toString()可清晰打印一维数组内容,如[1, 2, 3];多维数组须用Arrays.deepToString(),如[[1, 2], [3, 4]];自定义格式建议先调用再字符串处理,IDE调试时变量视图更直观。

调试 Java 程序时,直接打印数组对象(如 System.out.println(arr))只会输出类似 [I@1b6d3586 的哈希值,无法看清内容。用 Arrays.toString() 是最简单、最常用的方式,把一维数组转成可读的字符串形式,立刻提升调试效率。
一维数组:一行代码搞定可视化
该方法专为一维数组设计,自动处理 null 元素、基本类型和引用类型,格式统一、安全可靠。
- 对 int[]、String[]、Object[] 等都适用,无需重载或额外判断
- 遇到
null元素会显示为字面量null,不会抛空指针异常 - 示例:int[] nums = {1, 2, 3}; System.out.println(Arrays.toString(nums)); → 输出
[1, 2, 3]
多维数组:用 deepToString 避免“地址乱码”
Arrays.toString() 对二维及以上数组无效,它只会展开第一层引用,结果仍是类似 [[I@7852e922, [I@4e25154f] 的不可读内容。此时必须换用 Arrays.deepToString()。
- 递归遍历每一层,完整还原嵌套结构,支持任意维度
- 对 null 行或 null 元素同样友好,例如
new String[][]{{"a"}, null}输出[[a], null] - 示例:int[][] grid = {{1,2}, {3,4}}; System.out.println(Arrays.deepToString(grid)); → 输出
[[1, 2], [3, 4]]
自定义格式?先 toString 再字符串处理
标准方法输出带方括号和逗号,若需 JSON 风格、竖排、无空格等格式,不建议自己拼接——容易出错且丢失 null 安全性。推荐先用 Arrays.toString() 或 deepToString() 获取基础字符串,再用 replace()、substring() 等做轻量裁剪。
立即学习“Java免费学习笔记(深入)”;
- 去掉中括号:
Arrays.toString(arr).replaceAll("[\[\]]", "") - 换行显示每个元素:
Arrays.toString(arr).replaceAll(", ", " ").replaceAll("[\[\]]", "") - 注意:避免对原始数组做复杂字符串解析,以防索引越界或类型误判
IDE 调试时别忽略变量视图
虽然 Arrays.toString() 在日志和控制台极有用,但在 IDE(如 IntelliJ 或 Eclipse)中调试时,直接在 Variables 面板展开数组节点更直观——它已内置调用类似逻辑展示内容。不过,若需记录到日志文件、断言失败信息或远程调试输出,代码中显式调用仍是不可替代的。
写法简洁、语义明确、零配置生效,是 Java 标准库中少有的“开箱即用型”调试利器。


















