2013-07-07 22 views
70

Se io dichiaro un String matrice:String array di inizializzazione in Java

String names[] = new String[3]; 

Allora perché non possiamo assegnare valori alla matrice dichiarato sopra in questo modo:

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

"le costanti di matrice possono essere utilizzate solo negli inizializzatori"; non è abbastanza questa ragione? A meno che non stiate cercando un tipo di "intento legislativo"! – zEro

risposta

126

è possibile effettuare le seguenti durante la dichiarazione:

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

E se si desidera farlo da qualche parte dopo la dichiarazione:

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

Come ho chiesto perché non è possibile inizializzarlo utilizzando le parentesi graffe dopo aver dichiarato come array di 3. –

+0

@AnkitBohra. Questo è ciò che sta facendo il secondo frammento. –

+10

@AnkitBohra perché '{" x "," y "," z "}' non è un'istanza di array. Mentre 'new String [] {" x "," y "," z "}' è. – zEro

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

è un inizializzatore e utilizzati esclusivamente quando si costruisce o crea un oggetto array nuovo. Non può essere utilizzato per set la matrice. Si può usare quando dichiarato come:

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

Si può anche utilizzare:

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

come fa la differenza quando dobbiamo usare - ** String [] names = {" Ankit "," Bohra "," Xyz "}; ** e quando ** names = new String [] {" Ankit "," Bohra "," Xyz "}; **, qualsiasi caso d'uso in cui si adatta. grazie in anticipo @ hexafraction. –

+1

@Avenger Nothing. Entrambi fanno la stessa cosa, se ricordo bene. – hexafraction

2

Vuoi dire come:

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

Ma si può fare solo nella stessa istruzione quando si dichiararlo

+0

Non è così, volevo sapere perché non possiamo eseguire l'inizializzazione delle parentesi graffe dopo aver dichiarato qualsiasi array. –

+2

Perché la lingua è definita in questo modo, purtroppo. – texasbruce

2

Non è solo una sintassi Java valida. Si può fare

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

Prima di tutto, questo non ha niente a che fare con String, si tratta di array .. e che anche specificamente circa l'inizializzazione degli array dichiarativa.

Come discusso da tutti in quasi ogni risposta qui, è possibile, pur dichiarando una variabile, utilizzare:

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

Tuttavia, la dichiarazione posta, se si desidera assegnare un'istanza di un array:

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

per quanto ne so, la sintassi dichiarazione è solo uno zucchero sintattico e non è più applicabile quando assegnare importare valori in variabili perché quando vengono assegnati i valori è necessario creare un'istanza in modo corretto.

Tuttavia, se ci chiedi perché è così? Bene ... buona fortuna per avere una risposta a questo. A meno che qualcuno del comitato Java non risponda a questa domanda o ci sia una documentazione esplicita che cita il suddetto zucchero sintattico .