arrays.deeptostring 是 java 中用于打印多维数组的专用方法,它递归展开嵌套数组并生成可读字符串,而普通 tostring() 对多维数组仅返回内存地址;支持基本类型、对象数组及 null/空数组,输出格式清晰,但不适用于集合类。

Arrays.deepToString 是 Java 中专门用来打印多维数组(如二维、三维甚至更高维)的便捷方法,它能递归地将嵌套数组转换为可读字符串,避免直接调用 toString() 导致的哈希码输出(如 [[I@1b6d3586)。
为什么不能用普通 toString?
普通数组的 toString() 方法只对一维数组有效;对多维数组(本质是“数组的数组”),它只会返回对象默认的内存地址表示,无法展开内部元素。例如:
错误示例:
int[][] arr = {{1, 2}, {3, 4}};
System.out.println(arr.toString()); // 输出类似:[[I@7892a03e(不可读)
正确使用 deepToString
只需导入 java.util.Arrays,然后传入任意维度的数组即可:
- 支持所有基本类型数组和对象数组(包括混合嵌套)
- 自动识别并递归处理每一层子数组
- 输出格式清晰:外层数组用方括号
[...],内层数组也用[...],层级关系一目了然
正确示例:
import java.util.Arrays;
int[][] matrix = {{1, 2}, {3, 4, 5}};
System.out.println(Arrays.deepToString(matrix));
// 输出:[[1, 2], [3, 4, 5]]
String[][] grid = {{"a", "b"}, {"c"}};
System.out.println(Arrays.deepToString(grid));
// 输出:[[a, b], [c]]
处理 null 和空数组
deepToString 对 null 元素和空数组有明确约定:
- 数组中某个元素为
null→ 输出null(不是"null"字符串) - 空数组(长度为 0)→ 输出
[] - 整个数组引用为
null→ 返回字符串"null"
例如:
int[][] arr = {null, {}, {1}};
System.out.println(Arrays.deepToString(arr));
// 输出:[null, [], [1]]
注意点与常见问题
使用时需留意以下细节:
- 仅适用于数组,不能用于集合(如
ArrayList),否则编译不通过 - 不改变原数组,纯输出工具方法
- 调试时推荐搭配
System.out.println直接使用,无需额外格式化 - 若需自定义格式(如换行、缩进),需手动遍历或借助第三方库(如 Gson)
不复杂但容易忽略。











