返回数组内容而不是内存地址

时间:2015-03-31 12:17:06

标签: java arrays methods return-value

所以我试图在方法中返回数组的内容。 让我们假设这个数组被称为x,它已经有了值。

    public int[] returnArray()
     {
       return x;
      }

现在,我知道这将返回数组的内存地址。所以我尝试了之前看到的这种解决方法:

    public int[] returnArray()
     {
      int[] y=new int[x.length]
       for (int i=0;i<x.length;i++)
       {
         y[i]=x[i]
       }
       return y;
      }

现在,这也是返回数组的内存地址。对此没有解决方法吗?

2 个答案:

答案 0 :(得分:2)

return x;返回对数组的引用,这使您可以访问数组的所有元素。

您可能认为您获得了“数组的内存地址”,因为您尝试使用System.out.println(returnArray());打印数组,但不显示数组的元素。您应该使用System.out.println(Arrays.toString(returnArray()));

打印数组

答案 1 :(得分:1)

除了地址之外,您不能返回任何内容,因为您可以返回的只是一个值。数组通常包含多个值。

例如,您可以返回数组位置0的值,但不能同时返回所有不同的值。

任何发布“解决方法”的人显然都不知道。这将创建另一个数组,并将原始数组中的内容复制到新数组中,然后返回 数组的地址。

但是,您不需要返回数组的元素,数组引用允许您访问元素。

returnArray()[0]获取返回数组的第一个元素(引用)。

要打印元素,您可以迭代数组:

for (int x : returnArray()) { 
  System.out.println(x);
}