2009-09-30 4 views
1

Я ищу способ, чтобы дать массив Java значение непосредственно, за пределами своей декларации, например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); 
+2

Вы имеете в виду литерал массив? Это, похоже, не имеет ничего общего со статикой. – Uri

+0

Да «литеральный массив» - это термин, который я собирался сделать. Я не знал правильного имени – Mike

ответ

0

Вы можете использовать статический блок сделай то, что ищешь. Имейте в виду, что это выполняется при первом загрузке класса.

private static int a[]; 

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

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

На основании ответов, похоже, вы просите объявить массив не «статическим» массивом. –

+0

есть. я неправильно использовал слово static, извините – Mike

+0

«да, я неправильно использовал слово static» - можете ли вы рассказать нам о разнице между статикой и ссылкой? public void f (int a []) дает вам фактический массив в точке вызова метода, который вы можете просто использовать в качестве фактического массива. –

5

попробовать:

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

woah, жуткий. = -o –

+0

Я объявляю свою индивидуальность через свой нижний регистр t – akf

+0

и отсутствие пробела между ']' и '{'. я разрешу наши разногласия. –

3

В целом можно сказать,

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

 

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

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

инициализировать массивы в произвольных местах в коде.

3

уборщица перемежается, вы могли бы использовать переменные функциональные параметры, это по-прежнему работает с прохождением в массиве тоже - это просто синтаксический сахар.

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

public void test() { 
    f(1); 
    f(1,2,3); 
    f(new int[]{1,2,3}); 
} 
Смежные вопросы