Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中发送向量作为参数_Java_Arrays_Parameters - Fatal编程技术网

在Java中发送向量作为参数

在Java中发送向量作为参数,java,arrays,parameters,Java,Arrays,Parameters,这可能是一个愚蠢的问题。我相信我想要实现的目标很清楚,但我想不出它的语法。假设我有: public void foo(int[] v){ } public static void main(String args[]){ foo({1, 2, 3}); } 我可以在不声明新数组的情况下调用foo吗?如果是,如何编译?您的代码没有按照您编写的方式编译。但这会,也许这就是你想要的: public void foo(int... v) { // ... } public sta

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

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);
}
public static void main(String args[]) {
     foo(new int[]{1, 2, 3});
}
正如您编写的那样,不可能将这两行以其他方式组合成
foo({1,2,3})

或者你可以这样写:

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

public static void main(String args[]) {
     int[] params = {1, 2, 3};
     foo(params);
}
public static void main(String args[]) {
     foo(new int[]{1, 2, 3});
}
我在第一个版本中编写的
int..
语法称为“varargs”, 如果你想了解更多。 由于您是初学者,我不建议您使用它, 因为你可能会遇到一些陷阱, 而且它可能更令人困惑,而不是有用。
现在请坚持使用第二个或第三个版本。

您的代码不是按照您编写的方式编译的。但这会,也许这就是你想要的:

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);
}
public static void main(String args[]) {
     foo(new int[]{1, 2, 3});
}
正如您编写的那样,不可能将这两行以其他方式组合成
foo({1,2,3})

或者你可以这样写:

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

public static void main(String args[]) {
     int[] params = {1, 2, 3};
     foo(params);
}
public static void main(String args[]) {
     foo(new int[]{1, 2, 3});
}
我在第一个版本中编写的
int..
语法称为“varargs”, 如果你想了解更多。 由于您是初学者,我不建议您使用它, 因为你可能会遇到一些陷阱, 而且它可能更令人困惑,而不是有用。
现在请使用第二个或第三个版本。

您必须声明一个新数组。您不必将其分配给变量。这似乎有效。愚蠢的我,我没有试过foo(newint[]{1,2,3});您必须声明一个新数组。您不必将其分配给变量。这似乎有效。愚蠢的我,我没有试过foo(newint[]{1,2,3});