2016-11-15 71 views
0

這可能是一個愚蠢的問題。我相信很清楚我想實現什麼,但我想不出它的語法。假設我有:發送向量作爲參數在Java

public void foo(int[] v){ 

} 
public static void main(String args[]){ 
    foo({1, 2, 3}); 
} 

我可以在不聲明新數組的情況下調用foo嗎?如果是,如何?

+1

您必須聲明一個新的數組。您不必將其分配給變量。 –

+0

這似乎工作。傻我我沒有嘗試foo(new int [] {1,2,3}); –

回答

4

您的代碼不會按照您編寫它的方式進行編譯。但這種意志,也許這是你想要什麼:

public void foo(int... v) { 
    // ... 
} 

public static void main(String args[]) { 
    foo(1, 2, 3); 
} 

這裏,傳遞給foo該值將自動轉換爲一個數組。 v的值實際上是int[]

另外,保存的foo, 你可以寫這樣的原始簽名:

public void foo(int[] v) { 
    // ... 
} 

public static void main(String args[]) { 
    int[] params = {1, 2, 3}; 
    foo(params); 
} 

這是不可能的,因爲你寫的那些兩行合併成否則foo({1, 2, 3})

或者你可以寫這樣的:

public static void main(String args[]) { 
    foo(new int[]{1, 2, 3}); 
} 

int...語法我在第一個版本寫了被稱爲「可變參數」,如果你想了解更多關於它的 。 由於您是初學者,我不建議使用它,因爲您可能會遇到一些陷阱, ,它可能比有用的更令人困惑。 現在堅持第二或第三個版本。

+0

@BillMack也很好,看到我更新的答案。 – janos