這可能是一個愚蠢的問題。我相信很清楚我想實現什麼,但我想不出它的語法。假設我有:發送向量作爲參數在Java
public void foo(int[] v){
}
public static void main(String args[]){
foo({1, 2, 3});
}
我可以在不聲明新數組的情況下調用foo嗎?如果是,如何?
這可能是一個愚蠢的問題。我相信很清楚我想實現什麼,但我想不出它的語法。假設我有:發送向量作爲參數在Java
public void foo(int[] v){
}
public static void main(String args[]){
foo({1, 2, 3});
}
我可以在不聲明新數組的情況下調用foo嗎?如果是,如何?
您的代碼不會按照您編寫它的方式進行編譯。但這種意志,也許這是你想要什麼:
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...
語法我在第一個版本寫了被稱爲「可變參數」,如果你想了解更多關於它的 。 由於您是初學者,我不建議使用它,因爲您可能會遇到一些陷阱, ,它可能比有用的更令人困惑。 現在堅持第二或第三個版本。
@BillMack也很好,看到我更新的答案。 – janos
您必須聲明一個新的數組。您不必將其分配給變量。 –
這似乎工作。傻我我沒有嘗試foo(new int [] {1,2,3}); –