无法在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);
请阅读这篇更深入地解释问题的帖子: