PDA

View Full Version : [Java] Array di una classe


wizard_at
20-05-2008, 21:50
ciao a tutti,
come faccio a creare un'arrey di una classe che devo inizializzare.
per spiegarmi meglio:

questa e' la classe

class nome{
nome(int a){bla; bla; bla;}
bla bla bla;
}


questo e' l'array(la forma non e' corretta perche' non me la compila)

nome carlo[] = new nome[10](6);


ciao e grazie a tutti

wingman87
20-05-2008, 22:10
Non puoi dichiarare l'array e al tempo stesso inizializzarlo con quella sintassi. Puoi usare due metodi:
- il primo, che è quello che in genere viene più usato, prevede la dichiarazione dell'array prima e poi un ciclo per inizializzarne gli elementi, esempio:
nome carlo[] = new nome[10];
for(int i=0;i<carlo.length;i++)
carlo[i]=new nome(6);
- il secondo si usa in genere se devi dichiarare array di dimensioni ridotte e prevede l'istanziamento dei singoli oggetti al momento della dichiarazione dell'array, esempio:
nome carlo[]={new nome(6),new nome(6),new nome(6),new nome(6),new nome(6),new nome(6)};

Detto questo vorrei farti solo un piccolo appunto: i nomi delle classi scrivili con l'iniziale maiuscola, è una questione di leggibilità e di standard, vedendo un codice scritto in questo modo puoi riconoscere subito a colpo d'occhio quali sono le classi coinvolte anche se si trovano in file diversi.

wizard_at
21-05-2008, 07:10
grazie 1000.

non si puo' usare invece di
nome carlo[] = new nome[10];
for(int i=0;i<carlo.length;i++)
carlo[i]=new nome(6);

questo?

nome carlo[] = new nome[10];
for(carlo i : nome)
i=new nome(6);

si puo' o no? se non si puo' perche'?

andbin
21-05-2008, 09:17
questo?

nome carlo[] = new nome[10];
for(carlo i : nome)
i=new nome(6);

si puo' o no? se non si puo' perche'?No, non si può. Facendo i=new nome(6) tu semplicemente istanzi un nuovo oggetto di tipo nome e il reference lo assegni alla variabile locale 'i', non ad un elemento dell'array.
Per assegnare il reference ad un elemento dell'array dovresti avere l'indice, il quale però è "nascosto" nel for-each. Quindi dovresti usare il for normale.

banryu79
21-05-2008, 09:29
Se non erro, il for-each è stato introdotto per rendere più leggibile e meno prono ad errori la scrittura di cicli che utilizzano un Iterator per iterare una collezione; il costrutto for-each è particolarmente indicato poi nel caso di Generics.

Ciao :)