1

我是Java新手并正在学习它。我有一个关于数组的问题,你能看看吗?

我得到以下输出: [[Ljava.lang.String;@7a982589 来自以下代码:

String[][] multi = new String [][] {
{ "Scenarios", "Description", "1.0", "1.1", "1.2"},
{ "S1", "Verify hotel search", "Y", "Y", "Y"},
};
System.out.println(multi);

如果我放置以下内容:

System.out.println(multi[0][1]);

我得到正确的输出。描述。

现在,为什么我没有通过“多”变量获取整个数组。

4

7 回答 7

1

使用这个 util 方法,因为你有一个二维数组。阅读 api数组#deepToString(Object[])

Arrays.deepToString(multi);

返回指定数组的“深层内容”的字符串表示形式。如果数组包含其他数组作为元素,则字符串表示包含它们的内容等等。此方法旨在将多维数组转换为字符串

于 2013-09-14T03:43:39.520 回答
0

使用java.util.Arrays.deepToString(multi). 您看到的是默认值Object.toString(),因为数组不会覆盖toString().

于 2013-09-14T03:45:44.280 回答
0

System.out.println 在对象参数上调用 toString 以获取它们的文本表示。Java 数组也是对象,它们从 java.lang.Object 继承 toString:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
于 2013-09-14T03:46:14.680 回答
0

multi 将保存对数组本身的引用,而 multi[0][1] 将引用数组中的元素

于 2013-09-14T03:46:16.557 回答
0

从数组中访问每个项目并打印出来:

for(int i=0;i<2;i++){
            for(int j=0;j<5;j++){
                System.out.println(multi[i][j]);
            }
        }
于 2013-09-14T03:47:18.437 回答
0

您看到的是数组的默认 toString() 。如果你想打印漂亮,请使用Arrays.deepToString(arr);

于 2013-09-14T03:43:31.317 回答
0

那是因为,不是打印存储在数组中的值,而是打印数组的状态。那就是当你说它 System.out.println(multi); 隐含的意思 时System.out.println(multi.toString());

于 2013-09-14T03:44:05.293 回答