Arrays.toString 是 Java 中专为调试和日志设计的轻量级一维数组转字符串工具,支持所有一维数组类型、自动处理 null 元素、输出格式为 [e1, e2, e3],但不支持多维数组(需用 deepToString),且参数不可为 null 或非数组类型。

Arrays.toString 是 Java 中最常用、最轻量的数组转字符串工具,专为调试和日志输出设计,不适用于复杂格式或生产环境序列化。
什么时候该用 Arrays.toString
当你需要快速查看数组内容(尤其是单维基本类型或对象数组),又不想写循环打印时,它就是首选。比如在 IDE 调试控制台、单元测试断言失败输出、或临时日志中打印数组值。
- 支持所有一维数组:int[]、String[]、Person[] 等
- 自动处理 null 元素,显示为 null
- 输出格式统一:[e1, e2, e3],带方括号和逗号分隔,可读性强
- 不支持多维数组直接调用——对 int[][] 调用会输出类似 [[I@1b6d3586, [I@45ee12a7] 的哈希码,而非实际内容
怎么正确调用 Arrays.toString
必须导入 java.util.Arrays,然后传入数组引用(不能是单个元素或 null 引用本身)。
- ✅ 正确:
System.out.println(Arrays.toString(new int[]{1, 2, 3})); // [1, 2, 3] - ✅ 正确:
String[] names = {"Alice", "Bob"}; System.out.println(Arrays.toString(names)); // [Alice, Bob] - ❌ 错误:
Arrays.toString(1);—— 编译不通过,参数必须是数组类型 - ❌ 错误:
Arrays.toString(null);—— 运行时报 NullPointerException
多维数组怎么办
对二维及以上数组,要用 Arrays.deepToString 替代。它递归展开每一层,生成嵌套格式:
立即学习“Java免费学习笔记(深入)”;
int[][] grid = {{1, 2}, {3, 4}};System.out.println(Arrays.deepToString(grid)); // [[1, 2], [3, 4]]- 同样支持 null 行:
new String[][]{{"a"}, null}输出[["a"], null]
替代方案与注意事项
如果需要自定义分隔符、过滤 null、或兼容旧版 JDK(StringUtils.join 或 Guava 的 Joiner)。
- Arrays.toString 返回的是普通字符串,不可变,不会影响原数组
- 它不是线程安全问题来源,但频繁调用可能带来微小 GC 压力(通常可忽略)
- 不要在高频循环中反复调用它生成日志——考虑先判断日志级别是否开启


















