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

时间:2016-03-25 03:36:39

标签: java arrays

我有一个方法doSomething(),它接受​​Array作为参数。当我像下面那样传递数组时:

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.Error:未解析的编译   问题:令牌上的语法错误" doSomething",@之前的预期   此标记语法错误,插入"枚举标识符"去完成   EnumHeader语法错误,插入" EnumBody"去完成   BlockStatements

     

at org.my.ArrayMistry.main(ArrayMistry.java:6)

注意:

如果我按照下面的方式传递,那就OK:

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

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您必须将数组传递给方法,因为您以这种方式初始化了方法。这个doSomething({1,2});不起作用的原因是因为数组尚未初始化且{1,2}不是数组,所以它只是括号中的一些数字。如果你想发送一个数组,你必须做这样的事情

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

答案 3 :(得分:0)

您的方法doSomething()专门接受整数数组作为其参数。

请注意,在它工作的两种情况下,您要么传递现有数组,要么在传入时创建一个新数组。

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

答案 4 :(得分:0)

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

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