2010-07-01 23 views
45
int[] array1 = {1, 2, 3, 4, 5, 6, ,7, 8}; - working 


array1 = {1, 1, 1, 1, 2, 5, ,7, 8}; - NOT working 

La prima riga funziona, ma la seconda riga non funziona.Java: come inizializzare una matrice in Java su una riga?

Come è possibile effettuare l'inizializzazione dalla seconda riga in un'unica riga di codice?

risposta

84
array = new int[] {1, 1, 2, 3, 5, 8}; 

Fonte: Oracle JavaDocs - Arrays

+2

Aggiungi al tuo link di risposta alla documentazione: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html – uthark

+2

È il "nuovo" che è importante. –

+1

@uthark: Non vedo dove si trova questa sintassi sulla pagina che hai collegato. Il più vicino è la copia di array in basso, ma non è esattamente una soluzione a una riga. Può essere più preciso? – MikeD

5

La ragione per il primo funziona è perché il compilatore può controllare quanti elementi che si sta per assegnare alla matrice, e quindi assegnare la giusta quantità di memoria.

EDIT: Mi rendo conto ora che stai cercando di aggiornare array1 con nuovi dati ... La risposta di Mike D risolve il problema.

+1

FWIW se si invia l'array a qualcos'altro (come un gestore di liste grafiche) e si reinizializza la matrice come sopra, il collegamento al gestore dell'elenco grafico si interromperà. Mi sono imbattuto in questo mentre sviluppavo con Android. Quindi, se vuoi ** aggiornare ** la lista, la cosa migliore da fare è cancellarla e aggiungere più oggetti con i propri strumenti. E non usare mai nuovo. : p –

Problemi correlati