[[Ljava.lang.Integer; @ 3af4d6b3,[Ljava.lang.Integer; @ 203ba002]

时间:2014-04-11 17:54:19

标签: java

看起来可能是一个愚蠢的问题,但我无法正确理解为什么每次都会在控制台上发生这种情况。我已检查过每一行,但每行都正确响应,但是当它出现shuffle然后打印时,它给了我这个输出。

我的代码:

package rando;

import java.util.Arrays;
import java.util.Collections;

public class random
{
    public static void main( String [] args)
    {
        Integer[][] arr = new Integer[2][2];
        for (int i = 0; i < arr[1].length; i++)
        {
            for(int j=0; j<arr[1].length;j++)
            {
              arr[i][j] = i;
             // int iData=(int) (Math.random()*(int)arr[i][j]);
            }
        }
        Collections.shuffle(Arrays.asList(arr));
        System.out.println(Arrays.toString(arr));
    }
}

3 个答案:

答案 0 :(得分:2)

在这里,您创建一个大小为2的数组,其中包含两个大小为2的数组:

Integer[][] arr = new Integer[2][2];

在这里,您打印数组的内容:

System.out.println(Arrays.toString(arr));

如果您在数组上调用.toString(),则会得到类似[[Ljava.lang.Integer;@3af4d6b3的表达式。由于Arrays.toString()会对数组中的每个元素调用.toString(),因此可以解释结果。正如@JB Nizet所示,您可能打算致电Arrays.deepToString()

答案 1 :(得分:2)

改为使用这个:

      System.out.println(Arrays.deepToString(arr));

答案 2 :(得分:1)

数组不会覆盖toString()方法。这就是您使用Arrays.toString()而不是直接使用arr.toString()的原因。但是你的数组包含数组,因此Arrays.toString()方法显示外部数组包含的每个内部数组的无意义toString()

如果你想要一个有意义的表示,循环数组,或使用Arrays.deepToString(),或者改用List。