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

Java在变量定义外部声明数组,java,arrays,declaration,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); 您可以使用静态块来完成所需的操作。请记住,这是在第一次加载类时执行的 priv

我正在寻找一种直接给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);

您可以使用静态块来完成所需的操作。请记住,这是在第一次加载类时执行的

private static int a[];

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

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

您可以使用静态块来完成所需的操作。请记住,这是在第一次加载类时执行的

private static int a[];

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

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

尝试:

一般来说,你可以说

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

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

通常可以这样说

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

要在代码中的任意位置初始化数组,请尝试:

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


作为一种更简洁的替代方法,您可以使用variable parameters功能,这仍然适用于传入数组——这只是语法上的糖分

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

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

作为一种更简洁的替代方法,您可以使用variable parameters功能,这仍然适用于传入数组——这只是语法上的糖分

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

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

你是说一个文字数组吗?这似乎与静态无关。“文字数组”是我想要的术语。我不知道正确的名称你是说文字数组吗?这似乎与静态无关。“文字数组”是我想要的术语。根据回答,我不知道正确的名称,看起来你要求声明一个数组而不是“静态”数组。“是的,我误用了“静态”这个词”——你能告诉我们静态和引用之间的区别吗?public void f(int a[])在方法调用点为您提供实际数组,然后您可以将其用作实际数组。根据响应,您似乎要求声明一个数组而不是“静态”数组。“是的,我误用了“静态”一词”--您能告诉我们静态和引用之间的区别吗?public void f(int a[])提供了方法调用点处的实际数组,您可以将其用作实际数组。我通过小写字母声明我的个性,并指出“]”和“{”之间没有空格。我允许我们的差异。我通过小写字母声明我的个性,并指出“]”和“{”之间没有空格{我会允许我们的分歧。