这个java输出是什么意思?

时间:2010-03-09 17:34:05

标签: java arrays

public class Arrys {
    private int[] nums;

    //Step 3
    public Arrys (int arrySize) {
        nums = new int[arrySize];
    }

    public int [] getNums (){
        return nums;
    }
}

测试类:

public class TestArrys
{
    public static void main(String args[])
    {
        //Step 4
        Arrys arry = new Arrys(10);
        System.out.println("\nStep4 ");
        for(int index = 0; index < arry.getNums().length; index++) {
            System.out.print(arry.getNums());
        }
    }
}

这非常简单,这就是为什么我认为我做的事情从根本上是错误的。我想要的只是显示数组的值。

这是我回来的。我完全迷失了,我的书中没有任何内容可以解释这一点,也没有谷歌搜索它的帮助。

Step4 
[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440[I@1ac88440

3 个答案:

答案 0 :(得分:8)

您尝试多次打印数组本身。这段代码:

for(int index = 0; index < arry.getNums().length; index++) {
    System.out.print(arry.getNums());
}

应该(可能)是这样的:

for(int index = 0; index < arry.getNums().length; index++) {
    // println instead of print to get one value per line
    // Note the [index] bit to get a single value
    System.out.println(arry.getNums()[index]);
}

或者说更简单:

for (int value : arry.getNums()) {
   System.out.println(value);
}

当你在一个数组上调用toString()时,它会返回类似[I @ 1ac88440,其中[表示它是一个数组,我表示数组元素类型是int,而@xxxxxxxx是内存中的地址]。它是诊断性的,但在大多数情况下并不是真正有用。

使用Arrays.toString获得更有用的表示。

答案 1 :(得分:2)

尝试

System.out.println(java.util.Arrays.toString(arry.getNums()));

而不是循环。

默认情况下,打印出一个数组不会给你一个非常有用的字符串。为了获得你希望的那种输出,你可以循环遍历数组并自己打印出每个元素......或者你可以让java.util.Arrays做一些肮脏的工作。

答案 2 :(得分:0)

返回数组:

public int [] getNums ()

此循环打印数组引用getNums()。length times ...

for(int index = 0; index < arry.getNums().length; index++) {
    System.out.print(arry.getNums());
}

试试这个:

int [] nums = arry.getNums();
for(int index = 0; index < nums.length; index++) {
    System.out.print(arry.nums[index]);
}