arrays.tostring()是打印数组内容的正确方式,它输出可读格式如[1, 2, 3],避免内存地址显示;支持所有基本类型和对象数组,但不支持多维数组;使用时需防null,推荐objects.tostring(arr, "null")。

直接用 Arrays.toString() 打印数组,是最简单也最常被忽略的质量提升点——它让输出可读、调试高效、代码简洁,还避免了手动拼接出错。
为什么不用 System.out.println(arr)?
Java 中直接打印数组对象(如 int[] arr = {1,2,3}; System.out.println(arr);),输出的是类似 [I@1b6d3586 这样的内存地址,毫无业务意义。这是新手常见误区,也是低质量日志/调试的典型表现。
- 它不展示内容,只暴露引用哈希值
- 无法用于断言、日志比对或单元测试验证
- 后续排查时必须额外加调试语句,拖慢开发节奏
Arrays.toString 支持哪些数组类型?
该方法是泛型友好的重载集合,覆盖所有基本类型和对象数组:
- 基本类型:int[]、double[]、boolean[]、char[] 等
- 引用类型:String[]、Person[]、Integer[] 等
- 注意:不支持多维数组(如 int[][])——对二维数组需用
Arrays.deepToString()
例如:String[] names = {"Alice", "Bob"}; → Arrays.toString(names) 输出 [Alice, Bob],带空格分隔,格式统一。
实战中怎么用才更规范?
不只是“能用”,更要“用得稳、看得清、改得快”:
- 日志输出前必封装:用
logger.debug("用户列表: {}", Arrays.toString(users)),避免字符串拼接性能损耗 - 单元测试断言时直接比对:比如
assertEquals("[1, 2, 3]", Arrays.toString(result)) - 调试时配合 IDE 求值窗口:粘贴
Arrays.toString(myArray)即刻查看结构,无需打断点+变量展开 - 若需自定义格式(如无空格、用竖线分隔),优先考虑
String.join()或 Stream,而非手写 for 循环——简洁即可靠
一个容易踩的坑
误把 null 数组传进去会抛 NullPointerException:
- 错误写法:
Arrays.toString(null)→ 运行时报错 - 安全写法:
Objects.toString(arr, "null")或先判空:arr == null ? "null" : Arrays.toString(arr) - 尤其在处理 DAO 返回、JSON 解析结果等可能为空的场景,加一层防御更健壮
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











