Java多维字符串给出一个奇怪的输出

时间:2017-03-16 22:37:24

标签: java

所以我只是在这里玩一个2-D String数组,想看看如果我只打印出实际数组的行维度,输出会有多大变化。以下是我的代码与奇怪的输出。

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

2 个答案:

答案 0 :(得分:3)

正如@yters所指出的,你在这里看到的是对数组的引用。

请记住,在每个数组中,你现在有另一个数组(因为它是一个二维数组)。因此,words[0]案例的结果为["Hello","Mr.","Spencer!"]

在Java中执行print语句时,您依靠对象toString()方法为您提供正确的信息。在这种情况下,您执行此操作的对象是String[]类型,因此是一个数组。在数组上运行toString()时,您将打印出对象引用,这是您获得的结果。 (例如:[Ljava.lang.String;@135fbaa4 )。

打印数组的方法是编写如下代码:

    for (int m = 0; m < words.length; m++) {
        System.out.println(Arrays.toString(words[m]));
    }

通过使用Arrays util类,您可以在二维数组中打印每个数组。

答案 1 :(得分:0)

或者您可以将行System.out.println(words[m]);更改为System.out.println(words[m][n]);