2013-12-08 115 views
1

所以,我想我誤解了一些關於如何返回值的方法。 我不明白爲什麼在輸出中list [0]是3,因爲這是一個void方法,它不會返回任何東西返回主方法...如果void方法實際上可以返回值,那麼爲什麼num會仍然是0 .....不會成爲3以及? 或者void方法不返回任何值,數組除外?Java:void方法返回值?

public static void main (String []args){ 

    int []list = {1,2,3,4,5}; 
    int number = 0; 

    modify(number, list); 

    System.out.println("number is: "+number); 

    for (int i = 0; i < list.length; i++) 
    { 
     System.out.print(list[i]+" "); 
    } 

    System.out.println(); 
} 
public static void modify (int num, int []list){ 

    num = 3; 
    list[0] = 3; 
} 

輸出:

number is: 0 

3 2 3 4 5 
+1

Void不返回任何內容。你的方法不會返回任何東西。它修改由「list」引用的數組的內容。 –

回答

5

您可能需要熟悉「按值傳遞」,「按引用傳遞」以及瞭解對象是引用(通過方法調用之間的值)。

「number」是一個簡單的整數 - 通過值傳遞給modify方法。所以即使分配給「num」的值在方法內改變了,這個方法調用者使用的原始變量仍然是相同的。

「list」也是按值傳遞的,但是「list」是一個對象,因此您將引用傳遞給此對象(通過值)到modify方法中。所以如果你改變一個方法內的對象的內部,你正在改變調用者引用的同一個對象。現在

,如果你這樣做:

public static void modify (int num, int [] list) 
{ 

    num = 3; 
    int [] newlist = {9,8,7,6,5,4}; 
    list = newlist; 
    newlist[0] = 3; 
} 

然後使通入修改「清單」永遠不會被修改,因爲「清單」的修改方法中得到改變乾脆指向一個不同的對象。

4

它不返回任何東西,它只是修改變量list[0]

0

如上所述,該方法實際上並未返回值......它正在修改數組中的第一個值。輸出結果反映了'修改'所修改的值

0

list[0] = 3;是爲什麼你給出了輸出3.它與num無關,你沒有不是返回任何東西。您只需修改數組的內容。