Java控制台输出数组方法?
- 后端开发
- 2025-06-14
- 5
在Java中,控制台输出数组是常见操作,但直接使用System.out.println(array)会输出无意义的哈希码(如[I@1b6d3586),以下是详细方法及场景分析:

一维数组输出方法
Arrays.toString()(推荐)
import java.util.Arrays; int[] arr = {1, 2, 3}; System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3]
- 原理:将数组转为字符串格式 [元素1, 元素2, ...]。
- 优点:代码简洁,无需手动循环。
for 或 for-each 循环
String[] names = {"Alice", "Bob"}; for (int i = 0; i < names.length; i++) { System.out.print(names[i] + " "); // 输出:Alice Bob } for (String name : names) { System.out.print(name + " "); // 输出:Alice Bob }
- 适用场景:需自定义分隔符或格式(如换行、逗号分隔)。
多维数组输出方法
Arrays.deepToString()(推荐)
int[][] matrix = {{1, 2}, {3, 4}}; System.out.println(Arrays.deepToString(matrix)); // 输出:[[1, 2], [3, 4]]
- 原理:递归处理多维数组,输出嵌套结构。
嵌套循环
for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); // 换行 } // 输出: // 1 2 // 3 4
- 适用场景:需对齐、表格化输出时。
特殊类型数组
字符数组 char[]
char[] chars = {'a', 'b', 'c'}; System.out.println(chars); // 直接输出:abc
- 注意:仅 char[] 可直输,因 println 对其有重载方法。
对象数组
class Person { String name; Person(String name) { this.name = name; } @Override public String toString() { return name; } } Person[] people = {new Person("Tom"), new Person("Jerry")}; System.out.println(Arrays.toString(people)); // 输出:[Tom, Jerry]
- 关键:重写对象的 toString() 方法,否则输出类名@哈希值。
方法对比与最佳实践
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Arrays.toString() | 一维数组 | 简洁,自动格式化 | 不适用多维 |
| Arrays.deepToString() | 多维数组 | 支持任意嵌套层级 | 无 |
| 循环遍历 | 自定义格式输出 | 灵活控制细节(如缩进) | 代码量较多 |
| 直接输出 char[] | 字符数组 | 无需额外代码 | 仅限 char[] |
最佳实践:
- 一维数组 → Arrays.toString()
- 多维数组 → Arrays.deepToString()
- 需美化输出 → 嵌套循环 + String.format() 或 System.out.printf()
常见问题
-
为什么输出 [I@1b6d3586?
未使用正确方法,调用了 Object.toString() 的默认实现。


-
如何输出无逗号分隔?
用循环替换逗号:
String result = Arrays.toString(arr).replace(", ", " "); System.out.println(result); // 如 [1 2 3] -
空数组和 null 输出?
int[] empty = {}; System.out.println(Arrays.toString(empty)); // 输出:[] int[] nullArr = null; System.out.println(Arrays.toString(nullArr)); // 输出:null
- java.util.Arrays 是Java标准库内置类,方法说明参考 Oracle官方文档。
- 代码示例遵循Java SE 8+语法,兼容主流开发环境。
引用说明
通过正确选择方法,可清晰展示数组内容,提升调试和日志输出效率。