应使用 Arrays.toString() 或 Arrays.deepToString() 打印数组;前者适用于一维数组,自动格式化并安全处理 null,后者递归处理多维数组,避免显示哈希值。

Java 中直接打印数组会输出类似 [Ljava.lang.String;@1b6d3586 这样的哈希值,毫无可读性。用 Arrays.toString() 是最简单、最常用、也最推荐的格式化输出方式。
为什么 Arrays.toString 比直接打印更实用
它把一维数组转成易读的字符串形式,比如 [apple, banana, cherry],括号、逗号、空格都自动处理好,不需手动拼接。底层调用了每个元素的 toString() 方法,对 null 也能安全显示为 null,不会抛 NullPointerException。
基本用法:一维数组快速输出
适用于 int[]、String[]、Object[] 等所有一维数组类型:
-
int[] nums = {1, 2, 3}; System.out.println(Arrays.toString(nums));→ 输出[1, 2, 3] -
String[] fruits = {"apple", null, "cherry"};→ 输出[apple, null, cherry] - 注意:必须导入
java.util.Arrays,否则编译报错
多维数组怎么办?用 Arrays.deepToString
Arrays.toString() 对二维数组只显示内层数组的引用地址,例如 [[I@abc123, [I@def456]。此时应改用 Arrays.deepToString():
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
立即学习“Java免费学习笔记(深入)”;
int[][] matrix = {{1, 2}, {3, 4}};-
System.out.println(Arrays.deepToString(matrix));→ 输出[[1, 2], [3, 4]] - 它会递归处理每一层,支持任意嵌套深度(如三维、四维),且同样兼容
null
调试时的小技巧:结合日志或断点快速查看
在 IDE 调试中,把 Arrays.toString(arr) 放入“Evaluate Expression”窗口,能即时看到内容;写单元测试或 main 方法时,也建议统一用它替代 System.out.println(arr):
- 避免误以为数组为空——实际可能是没正确打印
- 便于复制粘贴到文档或协作沟通中,格式清晰无歧义
- 和
Arrays.equals()、Arrays.fill()等配合使用,形成一致的数组操作习惯
不复杂但容易忽略。养成用 Arrays.toString()(或 deepToString)的习惯,能让 Java 数组调试和展示省心又专业。

















