arrays.tostring()是java中打印一维数组最常用方式,返回形如[1, 2, 3]的可读字符串;二维及以上需用arrays.deeptostring()递归展开。

Java 中打印数组最常用也最省事的方式,就是用 Arrays.toString() ——它把一维数组转成可读字符串,免去手写循环或拼接的麻烦,开发时少写几行、少踩一个坑。
为什么不用 System.out.println(arr)?
直接打印数组对象(比如 int[] arr = {1, 2, 3}; System.out.println(arr);)输出的是类似 [I@1b6d3586 的哈希码,根本看不出内容。这是因为数组继承自 Object,默认调用的是 toString() 方法,没做元素级展开。
- 它只显示类型标识(如
[I表示 int 数组)和内存地址,对调试毫无帮助 - 多维数组更糟:
Arrays.toString()对二维数组只处理第一层,结果仍是“地址串”,得用Arrays.deepToString()
一维数组:一行搞定,支持所有基本类型和引用类型
Arrays.toString() 重载了所有基本类型数组(int[]、boolean[] 等)和 Object[] 的版本,返回形如 [1, 2, 3]、[true, false] 或 [a, b, null] 的字符串。
- 字符串自动加方括号、元素间逗号+空格分隔,格式统一易读
- 遇到
null元素会如实显示为null,不会抛异常 - 比手写 for 循环或 StringBuilder 拼接更安全、更不易出错
二维及以上数组:记得换用 deepToString
对 int[][] matrix = {{1,2}, {3,4}};,Arrays.toString(matrix) 输出的是 [[I@xxx, [I@yyy];而 Arrays.deepToString(matrix) 才能真正展开为 [[1, 2], [3, 4]]。
-
deepToString递归处理每一层嵌套,适用于任意维度数组 - 它也支持混合类型,比如
Object[][]中包含字符串、数字甚至 null - 注意:性能略低于普通
toString,但日常调试完全无感
小技巧:结合日志或断点快速验证
在 IDEA 或 VS Code 调试时,可以直接在“Evaluate Expression”里输入 Arrays.toString(myArray) 查看实时值;写日志时也推荐封装成工具方法:
-
log.debug("data: {}", Arrays.toString(data));—— SLF4J + 占位符,避免字符串拼接开销 - 单元测试中打印预期/实际结果对比,一眼看出差异位置
- 避免在循环里反复调用(虽无害但冗余),一次转换、多次使用
不复杂但容易忽略,用对方法,每天省下几十次手动展开数组的重复劳动。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











