arrays.deeptostring用于递归打印多维数组内容,避免tostring()仅显示哈希码;支持所有基本类型及object数组,对null安全,但不支持泛型集合。

Arrays.deepToString 是 Java 中专门用于打印多维数组(如二维、三维甚至更高维)的工具方法,它能递归地将嵌套数组的每个元素转换为字符串,避免直接调用 toString() 时只显示哈希码的问题。
为什么不能直接用 toString()?
普通数组(包括 int[]、String[] 等)重写了 toString(),但多维数组(如 int[][])本质是“数组的数组”,其元素是引用类型(如 int[]),而 Object.toString() 默认返回类名+@+哈希值,例如:[[I@1b6d3586, [I@4554617c] —— 完全看不出实际内容。
deepToString 的基本用法
只需传入任意维度的数组对象,方法会自动识别并深度展开:
- 支持所有基本类型数组及其组合(如 int[][]、double[][][]、String[][])
- 支持 Object 类型数组(包括自定义对象,前提是对象重写了 toString())
- 对 null 元素安全处理,输出字符串 "null"
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
System.out.println(Arrays.deepToString(matrix));
// 输出:[[1, 2], [3, 4, 5]]
常见注意事项
- 必须导入
java.util.Arrays,否则编译报错 - 不支持泛型集合(如 List
- >),只能用于原生数组
- 对于含自定义对象的数组(如 Person[][]),要求 Person 类提供可读的 toString() 实现,否则仍显示哈希值
- 性能上比普通 toString() 略低,因需递归遍历,但调试时完全可忽略
对比:一维 vs 多维的实际输出
假设定义:
int[] arr1 = {1, 2};int[][] arr2 = {{1}, {2, 3}};
对比结果:
-
Arrays.toString(arr1)→[1, 2] -
Arrays.toString(arr2)→[[I@..., [I@...](不可读) -
Arrays.deepToString(arr2)→[[1], [2, 3]](清晰直观)
不复杂但容易忽略——只要记住“多维就用 deepToString”,调试数组结构就再也不会一头雾水。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










