2015-03-31 106 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); 
} 
相關問題