2014-02-11 33 views
1

我在數組上做了一些練習,並且提示我在將元素逐個元素複製後返回對數組的引用。這究竟意味着什麼?返回對數組的引用是什麼意思?

我的代碼如下:

public static int[] cloneArray(int array[]) 
    { 
    int[] arraycopy = new int[array.length]; 
    for(int i = 0; i < array.length; i++) 
    { 
     arraycopy[i] = array[i]; 
    } 
    return arraycopy; 
    } 

我不知道我應該回來,雖然作爲「參照」:我應該返回整數或int數組?每當我嘗試打印數組時,我都會得到奇怪的字符和數字組合(除非我調用Arrays.toString())。

+0

要解決最後一句話:是的,如果您嘗試在數組'a'上使用'a.toString()',**會得到奇怪的字符和數字組合。這並不表示任何錯誤,除了使用'a.toString()'是錯誤的。 – ajb

回答

0

在Java中,對象只能通過引用來訪問。只需返回Array對象。

+1

不完全。 Java始終是按值傳遞的,但是在值爲引用的對象的情況下。 – Vitruvius

+0

有效的點。更好? – keshlam

+0

雖然現在完全屬實,但它並不是最清楚的措詞,並且有點含糊不清。 – Vitruvius

6

「返回對數組的引用」僅表示「返回數組」。

爪哇只返回,它們要麼原語或對象引用(即,對於目的,參考)。

儘管Java基於C,但它不會像C那樣使用指針等。

1

在Java中,數組和對象不像原始類型(如int)。請看下面的代碼:

public class MyClass { 
    public static int method1(int ar[]) { 
    int x = ar[1]; 
    ar[1] = 3; 
    return x; 
    } 
} 

現在假設其他地方,執行如下代碼:

int abcd[] = new int[3]; 
abcd[0] = 0; 
abcd[1] = 1; 
abcd[2] = 2; 
int d = MyClass.method1(abcd); 
System.out.println(abcd[1]); 

什麼會被打印?它不是1,但是3.這是因爲該方法沒有被賦予數組中的數據,而是被告知數組的位置。換句話說,它通過了參考。因爲它使用的是引用,所以更改數組索引的值在調用它的代碼中改變了它的值。如果method1已將int作爲參數,則不會發生這種情況。

基本上,在Java中,方法不接受數組作爲參數或返回數組。他們只使用對數組的引用。對象也是如此(除了通過值傳遞的字符串)。

相關問題