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

Returning Array contents instead of memory address

所以我正在尝试 return 方法中数组的内容。 让我们假设这个数组被称为 x 并且它已经有值了。

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

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

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

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

你不能 return 除了地址之外的任何东西,因为你可以 return 的只是 一个 值。数组通常包含多个值。

例如,您可以 return 数组位置 0 处的值,但不能同时显示所有不同的值。

发帖者 "workaround" 显然毫无头绪。这将创建另一个数组并将原始数组的内容复制到新数组中,然后 returns that 数组的地址。

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

returnArray()[0] 获取 returned 数组的第一个元素(参考)。

要打印元素,您可以遍历数组:

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

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

您可能认为您获得了 "memory address of the array",因为您尝试使用 System.out.println(returnArray()); 打印数组,但它不显示数组的元素。您应该使用 System.out.println(Arrays.toString(returnArray()));

打印数组