Arrays.toString()是最直接的数组调试方法,一维数组直接调用即可;嵌套数组需用deepToString();使用前须判空,自定义对象需重写toString(),避免用asList替代。

调试时想快速查看数组内容,Arrays.toString() 是最直接、最常用的方法,无需手动遍历,一行代码就能把整个数组转成可读字符串。
基础用法:一维数组直接打印
对 int、String、boolean 等基本类型或引用类型的一维数组,直接传入 Arrays.toString() 即可:
-
int[] arr = {1, 2, 3}; System.out.println(Arrays.toString(arr));→ 输出[1, 2, 3] -
String[] names = {"Alice", "Bob"}; System.out.println(Arrays.toString(names));→ 输出[Alice, Bob] - 空数组
new int[0]会输出[],null 则抛出NullPointerException,使用前建议判空
嵌套数组:用 toStringDeep 避免乱码
二维及以上数组(如 int[][])用 toString() 会显示类似 [[I@1b6d3586, [I@4554617c] 的哈希值,此时应改用 Arrays.deepToString():
int[][] matrix = {{1,2}, {3,4}};-
System.out.println(Arrays.deepToString(matrix));→ 输出[[1, 2], [3, 4]] - 它递归处理每一层,支持任意维度的 Object 数组和基本类型数组
调试技巧:配合日志与断点高效定位
在 IDE 调试中,可在变量监视窗口粘贴 Arrays.toString(arr) 快速求值;写日志时也建议封装成工具方法避免重复:
立即学习“Java免费学习笔记(深入)”;
- 简单封装:
static String show(int[] a) { return a == null ? "null" : Arrays.toString(a); } - Log 输出示例:
log.debug("Input array: {}", Arrays.toString(input)); - 注意不要在生产高频路径中频繁调用(有字符串拼接开销),调试和测试阶段放心用
常见陷阱:null 和自定义对象
数组本身为 null 会触发异常;元素为自定义对象时,默认显示其 toString() 结果:
- 安全写法:
System.out.println(arr == null ? "null" : Arrays.toString(arr)); - 若对象未重写
toString(),会显示类似MyClass@1a2b3c,此时需检查类定义或临时用 Lombok@Data - 不推荐用
Arrays.asList(arr)替代(对基本类型无效,且返回的是不可变列表)


















