Java funziona un po 'diverso rispetto a molte altre lingue. Quello che o
è nel primo esempio è semplicemente un riferimento all'oggetto.
Quando si dice o = new MyObject()
, si crea un nuovo oggetto di tipo MyObject e riferimenti o
per l'oggetto, mentre prima o
riferimento objects[index]
.
Cioè, gli oggetti [indice] stesso sono solo un riferimento a un altro oggetto in memoria. Quindi, per impostare gli oggetti [indice] su un nuovo oggetto MyObject, è necessario modificare il punto in cui gli oggetti [indice] puntano, il che può essere fatto solo utilizzando gli oggetti [indice].
Image: (le mie terribili abilità vernice: D)
Spiegazione: Questo è più o meno come funziona la gestione della memoria Java. Non esattamente, in ogni caso, ma grosso modo. Hai oggetti, che fa riferimento a A1. Quando si accede alla matrice di oggetti, si inizia dal punto di riferimento iniziale (A1) e si spostano in avanti i blocchi X. Ad esempio, l'indice di riferimento 1 ti porta a B1. B1 quindi ti dice che stai cercando l'oggetto in A2. A2 ti dice che ha un campo situato in C2. C2 è un numero intero, un tipo di dati di base. La ricerca è fatta
o non fa riferimento a A1 o B1, ma C1 o C2. Quando dici new ...
, creerà un nuovo oggetto e lo metterà lì (ad esempio, nello slot A3). Non influenzerà A1 o B1.
Fammi sapere se riesco a chiarire un po 'le cose.
fonte
2012-02-16 04:44:37
C'è davvero una sintassi del ciclo for come la prima è presente in java? –
@ChandraSekhar: [per ogni ciclo java] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html). – RanRag
@ChandraSekhar RanRag ha ragione. Tuttavia, ciò non è pertinente alla domanda.Forse l'OP ha appena riscritto il suo codice, non copia/incolla e quindi pensato nella sua lingua preferita. –