2013-07-07 5 views
70

Если я объявляю String массив:Строка инициализации массива в Java

String names[] = new String[3]; 

Тогда почему мы не можем присвоить значения массива, упомянутых выше, как это:

names = {"Ankit","Bohra","Xyz"}; 
+1

«Константы массива могут использоваться только в инициализаторах»; разве это не так? Если вы не ищете «законодательные намерения», то какие-то вещи! – zEro

ответ

126

Вы можете сделать следующее во время декларации:

String names[] = {"Ankit","Bohra","Xyz"}; 

И если вы хотите сделать это где-то после объявления:

String names[]; 
names = new String[] {"Ankit","Bohra","Xyz"}; 
+0

Как я спросил, почему мы не можем инициализировать его, используя фигурные скобки после объявления массива из 3. –

+0

@AnkitBohra. Это то, что делает второй фрагмент. –

+10

@AnkitBohra потому что '{" x "," y "," z "}' не является экземпляром массива. Хотя 'new String [] {" x "," y "," z "}' is. – zEro

13
names[] = {"Ankit","Bohra","Xyz"}; 

является инициализатором и используется исключительно при строительстве или создания нового объекта массива. Он не может использоваться для набора массива. Вы можете использовать его, когда объявлен как:

String[] names= {"Ankit","Bohra","Xyz"}; 

Вы также можете использовать:

names=new String[] {"Ankit","Bohra","Xyz"}; 
+0

как это имеет значение, когда мы должны использовать - ** String [] names = {" Ankit "," Bohra "," Xyz "}; ** и когда ** names = new String [] {" Ankit "," Bohra "," Xyz "}; **, любые варианты использования, в которые он вписывается. заранее спасибо @hexafraction. –

+1

@ Avenger Nothing. Они оба делают то же самое, если я правильно помню. – hexafraction

2

Вы имеете в виду, как:

String names[] = {"Ankit","Bohra","Xyz"}; 

Но вы можете сделать это только в том же заявлении, когда вы объявить его

+0

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

+2

Потому что язык определен таким образом, к сожалению. – texasbruce

2

Это просто не действительный синтаксис Java. Вы можете сделать

names = new String[] {"Ankit","Bohra","Xyz"}; 
6

Прежде всего, это не имеет ничего общего с String, речь идет о массивах .. и что слишком конкретно о декларативной инициализации массивов.

Как обсуждалось всеми почти каждый ответ здесь, вы можете, при объявлении переменной, используйте:

String names[] = {"x","y","z"}; 

Однако после декларации, если вы хотите назначить экземпляр массива:

names = new String[] {"a","b","c"}; 

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

Однако, если вы спросите нас, почему это так? Ну ... удачи, получив ответ на это. Если кто-либо из комитета Java не ответит на это, или имеется явная документация, ссылающаяся на указанный синтаксический сахар .

Смежные вопросы