上一篇
在Java中输出数组到控制台,常用
Arrays.toString()方法(需导入
java.util.Arrays)。,“
java,int[] arr = {1,2,3};,System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3],`
,多维数组用Arrays.deepToString()`,也可用循环遍历元素逐个输出。
在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+语法,兼容主流开发环境。
通过正确选择方法,可清晰展示数组内容,提升调试和日志输出效率。
