Java在变量定义之外声明数组

时间:2009-09-30 18:07:25

标签: java arrays declaration

我正在寻找一种方法,在声明之外直接为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);

5 个答案:

答案 0 :(得分:7)

尝试:

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

答案 1 :(得分:5)

尝试:

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

答案 2 :(得分:3)

一般来说,你可以说

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

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

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

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

答案 3 :(得分:3)

作为一个更清洁的替代品,你可以使用变量参数功能,这仍然适用于传入一个数组 - 它只是语法糖。

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

public void test() {
    f(1);
    f(1,2,3);
    f(new int[]{1,2,3});
}

答案 4 :(得分:0)

您可以使用静态块来执行您要查找的内容。请记住,这是在第一次加载类时执行的。

private static int a[];

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

public static void f(int a[]) {
 ///
}