2013-07-27 97 views
0

當我使用參數聲明一個方法時,並且在我的方法中,我爲這些參數賦值,那些參數變成了變量?當我在方法中使用變量時,可以將變量調用到方法的參數中嗎?

我的問題是,我可以這樣說:「當我在方法中使用它時,我的方法的參數也是一個變量」?

例子:

public int returnDays(int month) 
{ 
month = getMonth(); 
//"Can I say : month is a variable?" 

} 
+0

爲什麼要分配給參數?它是按值傳遞的,所以'returnDays'的調用者不會看到他提供的任何值的變化。該參數不會「變成」任何它不是因爲您的任務而已。引入新的局部變量通常更清楚,而不是更改值參數的值!另外:如果你不打算讀取調用者打擾發送給你的值,在你的場景中有一個參數的原因是什麼? –

回答

1
//"Can I say : month is a variable?" 

是的,它是一個local variable該方法。

Official docs on passing arguments

+0

謝謝,如果我在if語句中使用月份(在同一個方法裏面)呢? – tomasfly123

+0

是的,你可以使用it.Please花費一些時間在該鏈接:) –

1

是的,它被稱爲變量,你可以調用它的變量,你可以使用它。變量在存儲器whoes值名爲佔位符可在程序

在計算機編程來改變一個變量是一個存儲位置,其中包含一些已知的或 未知量的 相關符號名稱(標識符)或信息,一個價值。變量名是 常用的方法來引用存儲的值;將名稱和 內容分開允許名稱獨立於其所代表的確切信息 使用。計算機源代碼中的標識符 可以在運行時綁定到一個值,因此變量的值 因此可以在程序執行過程中更改爲reference

1

你有2個問題

我聲明的方法與參數,和我的方法裏面我給你 值這些參數,這些參數變成變量

短回答是他們是變數

我可以調用變量的方法的參數時,我使用它們 我的方法裏

至於你的背景而言是的,你可以使用它們,但在更廣泛的角度看,變量是可以訪問到您內該方法的範圍,你應該read這才進入開發細節

0

我不完全得到你的問題。是的,「月」是一個變量。但是,我不確定你想通過分配它來實現什麼。 int類型來自struct,這意味着它不通過引用傳遞。當您撥打returnDays(x)時,x本身未通過,並且其副本已生成。

如果您想要更改其值並返回日期,則需要使用refout關鍵字。前者基本上通過一個指向x的指針,它可以用作你的函數。然而,後者更嚴格,並且要求函數初始化通過它的任何值。

所以,這是你最終與

public int ReturnDays(out int month) 
{ 
    month = GetCurrentMonth(); 
    return GetDays(month); 
} 

代碼但儘管如此,我不知道這是否是你想這樣回答的。

0

首先,這是C#還是Java?每種語言都有自己的偏心。

如果C#使用KappaG3顯示的out語句。

如果Java中,

只使用一個return語句你的函數/法裏:

return getMonth(); 

如果需要返回多個值,你可以傳遞對象,然後分配給函數內部的那些對象/方法。對象通過引用傳遞,其中原語通過值傳遞。整數是一個對象,但並不像一個你可以從看到:

// 
public class Main { 
public static void main(String[] args) { 

    int  value1 = 0; 
    Integer value2 = new Integer(0); 
    MyObject value3 = (new Main()).new MyObject(0); 

    passByVal(value1); 
    passByRef(value2); 
    passByRef(value3); 

    System.out.println("value1 = " + value1); 
    System.out.println("value2 = " + value2); 
    System.out.println("value3 = " + value3); 
} 

class MyObject 
{ 
    public int value = 0; 

    public MyObject(int value) { this.value = value; } 

    @Override 
    public String toString() { 
     return value + ""; 
    } 
} 

public static void passByVal(int i) 
{ 
    i = 7; 
} 
public static void passByRef(Integer i) 
{ 
    i = new Integer(7); 
} 
public static void passByRef(MyObject o) 
{ 
    o.value = 7; 
} 

} 

其返回的輸出:

 
0 
0 
7 

所以如果你需要返回一串數值,我建議傳遞對象或返回專門設計用於容納所有這些值的對象

+0

除了我可能應該使int值私人而不是公開,並添加一個 public int getValue(){返回值;} 返回值 – koZmiZm

+0

如果你不想創建你自己的類,你可以把所有的值放到List或Arraylist中,並且只要稍後將它們放回,你甚至可以將混合類型放入列表中。這是一種馬虎的做法,儘管你會得到編譯器警告,除非你添加正確的@supress – koZmiZm

相關問題