2012-12-08 182 views
0

的數組變量可以說我有如下的類:訪問另一個類

public class class1{ 

    private int[] array1; 

    public class1(){ 
     array1 = new int[10]; 
     } 

    public int[] getArray(){ 
     return array1; 
     } 
} 

如果我在另一個類中或在主創建該類的一個實例,並使用的getArray()方法到陣列分配到上層類中的另一個變量,然後在那裏修改數組的值,第一個類中的原始數組值是否也會被修改?

+4

你爲什麼不親自嘗試一下? –

+0

試試看..:/然後你會學到...... –

+0

是的,你們是對的。我很想完成我的項目,我忘了我總是可以創建一個簡單的測試課程。謝謝。 – user1887413

回答

2

第一個類中的原始數組值還會被修改嗎?

是的,它會被修改,因爲你在調用者中得到的不是數組本身的副本,而是你獲得了對原始數組對象的引用副本。

而且,如果您使用任何引用修改數組,則所有引用指向該數組的引用都會反映該更改。

+0

感謝您的回覆。在仔細研究一下代碼後,我意識到如果原始變量是一個整型變量,它不會以相同的方式工作。從您的解釋中,我瞭解到,傳遞參考和值之間是有區別的。有沒有辦法將第一個類的整數變量的引用傳遞給調用類,而不是用傳統的setter和getter方法修改它? – user1887413

+0

@ user1887413。那麼,在Java中,所有東西都是按價值傳遞的。所以,如果你傳遞一個整數,它的值將被複制到callie中。因此,所做的更改不會反映在調用者中。現在,您可能會認爲您可以使用'Integer'引用而不是原始int,但在這種情況下,由於'Integer'是不可變的,所以任何修改都會創建另一個'Integer'對象,從而使原始對象保持不變。所以,不,你不能那樣做。你將不得不使用'setters'來修改它們的值。 –

0

是的,原來的數組值也會被修改。

正如您從方法返回數組的引用。引用只不過是指向對象地址的指針。當你從方法中返回時,它被分配給另一個參考。如果您使用該引用修改任何內容,則基本上會修改相同的數組,即原始數組。