在 Java 中输出数组 有很多方式,取决于你想输出的格式、数组类型(基本类型数组、对象数组)以及是否需要在控制台、文件或日志中输出。下面我给你一个系统性的整理,涵盖常见方法和示例。
1. 使用 for 循环输出
这是最传统、最直观的方法。
示例:基本类型数组
int[] arr = {1, 2, 3, 4, 5};
// 普通 for 循环
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
// 增强 for 循环(foreach)
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
输出:
1 2 3 4 5
1 2 3 4 5
2. 使用 Arrays.toString() 输出一维数组
Java 提供了 java.util.Arrays 工具类,方便输出数组。
import java.util.Arrays;
int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr));
输出:
[1, 2, 3, 4, 5]
✅ 优点:简单、可读性高
❌ 缺点:只适合一维数组
3. 使用 Arrays.deepToString() 输出多维数组
对于二维或多维数组,使用 deepToString:
int[][] arr2D = {{1, 2}, {3, 4}, {5, 6}};
System.out.println(Arrays.deepToString(arr2D));
输出:
[[1, 2], [3, 4], [5, 6]]
4. 使用 String.join(字符数组或字符串数组)
如果是 字符串数组,可以使用 String.join():
String[] names = {"Alice", "Bob", "Charlie"};
System.out.println(String.join(", ", names));
输出:
Alice, Bob, Charlie
✅ 可自定义分隔符
5. 使用 Streams(Java 8+)
Java 8 引入了 Stream API,可以更灵活地处理数组输出:
import java.util.Arrays;
int[] arr = {1, 2, 3, 4, 5};
// 打印每个元素
Arrays.stream(arr).forEach(System.out::println);
// 转为逗号分隔的字符串
String result = Arrays.stream(arr)
.mapToObj(String::valueOf)
.reduce((a, b) -> a + ", " + b)
.orElse("");
System.out.println(result);
输出:
1
2
3
4
5
1, 2, 3, 4, 5
6. 使用 Collections 方式(对象数组)
如果是 对象数组,可以先转为 List 再输出:
Integer[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.asList(arr));
输出:
[1, 2, 3, 4, 5]
✅ 优点:对象数组很方便
❌ 缺点:不能直接用于基本类型数组(需用包装类,如Integer)
7. 自定义格式输出
如果你想输出更自由的格式,可以用循环拼接:
int[] arr = {1, 2, 3, 4, 5};
StringBuilder sb = new StringBuilder();
sb.append("{");
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]);
if (i != arr.length - 1) sb.append("; ");
}
sb.append("}");
System.out.println(sb.toString());
输出:
{1; 2; 3; 4; 5}
总结
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| for/foreach | 所有数组 | 灵活 | 代码略长 |
| Arrays.toString | 一维数组 | 简单 | 仅一维 |
| Arrays.deepToString | 多维数组 | 简单 | 多维专用 |
| String.join | 字符串数组 | 可自定义分隔符 | 仅字符串数组 |
| Streams | Java 8+ | 灵活、可链式操作 | 初学者稍复杂 |
| Arrays.asList | 对象数组 | 可直接打印 | 基本类型数组需包装类 |
| StringBuilder 自定义 | 所有 | 自定义输出 | 代码稍繁琐 |