在Java

时间:2016-11-15 22:56:58

标签: java arrays parameters

这可能是一个愚蠢的问题。我相信它很清楚我想要实现的目标,但我无法想到它的语法。假设我有:

public void foo(int[] v){

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

我可以在不声明新阵列的情况下调用foo吗?如果是,怎么样?

1 个答案:

答案 0 :(得分: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...语法称为" varargs", 如果你想了解更多相关信息。 由于您是初学者,我不建议您使用它, 因为你可能会遇到一些陷阱, 它可能比有用更令人困惑。 暂时坚持第二或第三版。

相关问题