发送向量作为参数在Java

问题描述:

这可能是一个愚蠢的问题。我相信很清楚我想实现什么,但我想不出它的语法。假设我有:发送向量作为参数在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}); –

您的代码不会按照您编写它的方式进行编译。但这种意志,也许这是你想要什么:

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