Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 - Fatal编程技术网

无法在java中将数组作为参数传递

无法在java中将数组作为参数传递,java,arrays,Java,Arrays,我有一个方法doSomething(),它接受数组作为参数。当我像下面这样通过数组时: package org.my; public class ArrayMistry { public static void main(String ... args) { doSomething({1,2});// Compilation Error } public static void doSomething(int[] params) {

我有一个方法
doSomething()
,它接受数组作为参数。当我像下面这样通过数组时:

package org.my;

public class ArrayMistry {

    public static void main(String ... args) {
        doSomething({1,2});// Compilation Error
    }   

    public static void doSomething(int[] params) {

    }   

}
我发现编译错误:

线程“main”java.lang中出现异常。错误:未解析编译 问题:令牌“doSomething”上出现语法错误,@应在之前出现 此令牌语法错误,请插入“枚举标识符”以完成 EnumHeader语法错误,请插入“EnumBody”以完成 区块语句

位于org.my.ArrayMistry.main(ArrayMistry.java:6)

注:

如果我以以下方式通过,则可以:

public static void main(String ... args) {
    int[] p = {1,2};
    doSomething(p);// no Error
    doSomething(new int[]{1,2});// no Error
}

这是因为您没有将{1,2}声明为新数组。它必须声明为
new int[]{1,2}
才能正常工作,否则您不会创建数组。

您必须创建一个数组才能传递到方法中,因为您以这种方式初始化了该方法。这
doSomething({1,2})的原因不起作用是因为数组尚未初始化,{1,2}不是数组,它只是括号中的一些数字。如果要发送数组,必须执行以下操作

int[] p = {1,2};
doSomething(p);
方法doSomething()特别接受整数数组作为其参数

请注意,在这两种情况下,您要么传递了一个现有数组,要么在传入时创建了一个新数组


在原始示例中,您传递的是一组任意数字,没有保留内存或指定类型

解决此问题的另一种方法是将引用作为参数传递给函数,如下所示:

doSomething(new int[]{1,2});

数组是通过引用传递的。您需要使用[1,2]创建一个数组对象,并将所创建对象的引用传递给
dosomething
new
关键字为创建此
int
数组分配空间

int[] arr = new int[]{1,2};
doSomething(arr);

请阅读这篇更深入地解释问题的帖子: