1

例如,我正在寻找一种在其声明之外直接为 java 数组赋值的方法

/*this works*/
int a[] = {1,2,3};

/*this doesn't*/
a = {1,2,3};

其动机是可以像这样使用以数组作为参数的方法

public void f(int a[]) {
 /*do stuff*/
}

f({1,2,3});

代替

int a[] = {1,2,3};
f(a);
4

5 回答 5

7

尝试:

a = new int[] {1,2,3};
于 2009-09-30T18:10:36.413 回答
5

尝试 :

a = new int[]{1,2,3};
于 2009-09-30T18:09:38.467 回答
3

一般来说,你可以说

int[] a;
a = new int[]{1,2,3};

 

public void f(int a[]) { ... }

f(new int[]{1,2,3})

在代码中的任意位置初始化数组。

于 2009-09-30T18:09:55.423 回答
3

作为更清洁的替代方案,您可以使用可变参数功能,这仍然适用于传递数组 - 它只是语法糖。

public void f(int... a) {
    /*do stuff*/
}

public void test() {
    f(1);
    f(1,2,3);
    f(new int[]{1,2,3});
}
于 2009-09-30T18:18:54.127 回答
0

您可以使用静态块来做您正在寻找的事情。请记住,这是在第一次加载类时执行的。

private static int a[];

static {
    a = new int[] {1,2,3};
    f(new int[]{1,2,3}); 
}

public static void f(int a[]) {
 ///
}
于 2009-09-30T18:09:37.263 回答