Arrays.toString() 能安全、统一地打印一维数组,自动处理空数组、null 元素、类型差异等边界情况,避免手动遍历的格式错误和异常;但不支持多维数组,后者需用 Arrays.deepToString()。

直接调用 Arrays.toString() 就能清晰、安全、格式统一地打印一维数组,避免手动拼接或越界异常。
为什么不用 for 循环手动拼接?
手动遍历打印容易出错:忘记逗号分隔、多加空格、漏掉边界判断,尤其空数组时容易抛 NullPointerException 或输出不一致。而 Arrays.toString() 内部已处理所有边界情况——空数组返回 [],null 元素显示为 null,字符串自动加引号,数字按默认格式转字符串。
基本用法:一行搞定
传入任意一维数组(原始类型或引用类型),方法返回标准格式字符串:
-
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] -
Integer[] nums = {null, 10}; System.out.println(Arrays.toString(nums));→ 输出:[null, 10]
注意原始类型与包装类的区别
原始类型数组(如 int[]、double[])和包装类数组(如 Integer[]、Double[])都支持 toString(),但行为一致——不会自动拆箱或装箱。特别注意:Arrays.toString(new int[]{}) 返回 [],不是 null;而 Arrays.toString(null) 会抛 NullPointerException,需提前判空。
立即学习“Java免费学习笔记(深入)”;
配合日志或调试的实用写法
在开发中常结合日志框架或调试语句使用,提升可读性:
logger.debug("配置项: {}", Arrays.toString(configArray));System.out.printf("输入参数 %s%n", Arrays.toString(args));- 若需自定义前缀/后缀,可直接字符串拼接:
"data=" + Arrays.toString(data),无需额外格式化逻辑
Arrays.deepToString()。



















