This question was migrated来自Computer Science Stack Exchange,因为它可以在Stack Overflow上得到解答。
Migrated 2年前。
因此,我在这里只是在玩一个二维字符串数组,想看看如果仅打印出实际数组的行维度,输出将如何变化。以下是带有奇怪输出的代码。
输出:
通过使用Arrays util类,您可以像这样在二维数组中打印每个数组。
Migrated 2年前。
因此,我在这里只是在玩一个二维字符串数组,想看看如果仅打印出实际数组的行维度,输出将如何变化。以下是带有奇怪输出的代码。
public class TwoDimensionalArrays {
public static void main(String[] args) {
String[][] words = { { "Hello", "Mr.", "Spencer!" }, { "How", "Are", "You", "Doing", "Today?" },
{ "I", "recommend", "an", "outdoor", "activity", "for", "this", "evening." }
};
for (int m = 0; m < words.length; m++) {
for (int n = 0; n < words[m].length; n++) {
System.out.println(words[m]);
}
}
}
输出:
[Ljava.lang.String;@7852e922
[Ljava.lang.String;@7852e922
[Ljava.lang.String;@7852e922
[Ljava.lang.String;@4e25154f
[Ljava.lang.String;@4e25154f
最佳答案
@yters指出,您在这里看到的是对数组的引用。
请记住,在每个数组内部,现在都有另一个数组(因为它是一个二维数组)。因此,在您的words[0]
情况下,结果将是["Hello","Mr.","Spencer!"]
。
在Java中执行打印语句时,您依赖于对象toString()
方法为您提供正确的信息。在这种情况下,要执行此操作的对象的类型为String[]
,因此为数组。在数组上运行toString()
时,将打印出对象引用,这是您得到的结果。 (例如:[Ljava.lang.String;@135fbaa4
)。
您可以执行以下操作来打印数组:
for (int m = 0; m < words.length; m++) {
System.out.println(Arrays.toString(words[m]));
}
通过使用Arrays util类,您可以像这样在二维数组中打印每个数组。