2015-03-31 77 views
0

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

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

+1

您不能。 Java没有对象值的概念。 – hyde 2015-03-31 12:20:51

+0

您是否试图打印它? – assylias 2015-03-31 12:23:17

回答

2

return x;返回到阵列,其可以访问到所述阵列的所有元素的引用。

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

+0

啊好的。不能相信我没有想到这一点。谢谢! – ARam 2015-03-31 13:57:32

1

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

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

谁发布的“解决方法”显然没有线索。这会创建另一个数组并将原始数组中的内容复制到新数组中,然后返回数组的地址。

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

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

要打印的元素,可以迭代这个数组:

for (int x : returnArray()) { 
    System.out.println(x); 
} 
相关问题