如何在Java中打印一个数组--单维和多维数组

138 阅读2分钟

一个Java数组对象不能被直接打印到控制台。

当你试图在Java中使用println() 方法来打印一个数组时,对象的哈希代码将被打印出来:

public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4};
System.out.println(numbers);
// [I@1f32e575
}

为了将数组的内容打印到控制台,你需要从java.util.Arrays 类中调用Arrays.toString() 方法。

把你想打印的数组作为参数传给Arrays.toString() 方法,如下图所示:

import java.util.Arrays;

public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4};
 System.out.println(Arrays.toString(numbers));
 // [1, 2, 3, 4]
}

然而,请记住,Arrays.toString() 方法不能用来打印多维数组。即使是一个二维数组也会导致该方法打印出哈希代码。

你需要调用toString() 方法,而不是Arrays.deepToString() 方法:

import java.util.Arrays;
public static void main(String[] args) {
int[][] numbers = {{1, 2}, {3, 4}};
System.out.println(Arrays.toString(numbers));
// [[I@1f32e575, [I@279f2327]

 System.out.println(Arrays.deepToString(numbers));
 // [[1, 2], [3, 4]]
}

deepToString() 方法会将一个多维数组转换为其字符串表示,没有问题。

你需要对一维数组使用toString() 方法的原因是,deepToString() 方法在一维数组上使用时将会出现错误。

使用for循环打印一个Java数组

另外,你也可以使用for 循环来打印一个Java数组,如下所示:

public static void main(String[] args) {
String[] myArr = {"John", "Jane", "Doe"};
for (String element: array) {
System.out.println(element);
}
}

上述程序的输出将如下:

John
Jane
Doe

当使用for 循环时,数组的每个元素将被打印在单独的一行,并且没有环绕元素的数组[] 的括号符号。

对于多维数组,你需要使用多个for 循环,与你的数组中的维度一样多。

对于一个二维数组,你需要两个for 循环,如下图所示:

public static void main(String[] args) {
String[][] myArr = {{"John", "Doe"}, {"Jane", "Doe"}};
for (String[] elements: myArr) {
for(String element: elements){
System.out.println(element);
}
}
}
// Output:
// John
// Doe
// Jane
// Doe

因为第一个循环将找到一个String 类型的数组,String[] 类型被用来输入elements 变量。

第二个for 循环将是存储数组元素的地方,所以你在这第二个循环中调用println()

对于其他数组类型,你只需要在for 循环内匹配类型就可以了:

public static void main(String[] args) {
int[][] myArr = {{1, 2}, {3, 4}};
for (int[] elements: myArr) {
for(int element: elements){
System.out.println(element);
}
}
}
// Output:
// 1
// 2
// 3
// 4

现在你已经学会了如何在Java中打印一个数组,包括单维数组和多维数组。

干得好!👍