【问题标题】:Returning Array contents instead of memory address返回数组内容而不是内存地址
【发布时间】:2015-03-31 12:17:05
【问题描述】:

所以我试图在一个方法中返回一个数组的内容。 让我们假设这个数组被称为 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;
      }

现在,这也返回了数组的内存地址。没有解决办法吗?

【问题讨论】:

  • 你不能。 Java 没有对象值的概念。
  • 你想打印吗?

标签: java arrays methods return-value


【解决方案1】:

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

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

【讨论】:

  • 啊,好吧。不敢相信我没想到。谢谢!
【解决方案2】:

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2020-03-13
    相关资源
    最近更新 更多