Java funciona un poco diferente a muchos otros idiomas. Lo que o
está en el primer ejemplo es simplemente una referencia al objeto.
Cuando dice o = new MyObject()
, se crea un nuevo objeto de tipo MiObjeto y referencias o
a ese objeto, mientras que antes referenciada o
objects[index]
.
Es decir, objects [index] en sí es solo una referencia a otro objeto en la memoria. Por lo tanto, para establecer objetos [índice] en un nuevo objeto MyObject, debe cambiar hacia dónde apuntan los objetos [índice], lo cual solo se puede hacer usando objetos [índice].
la imagen: (mis habilidades de pintura terribles: D)

Explicación: Esto es más o menos cómo funciona la gestión de memoria de Java. No exactamente, de ninguna manera, sino aproximadamente. Usted tiene objetos, que hace referencia a A1. Cuando accede a la matriz de objetos, comienza desde el punto de referencia inicial (A1) y avanza X bloques. Por ejemplo, hacer referencia al índice 1 lo llevaría a B1. B1 luego te dice que estás buscando el objeto en A2. A2 te dice que tiene un campo ubicado en C2. C2 es un número entero, un tipo de datos básicos. La búsqueda está hecha.
o no hace referencia a A1 o B1, pero C1 o C2. Cuando diga new ...
, creará un nuevo objeto y lo colocará allí (por ejemplo, en el espacio A3). No afectará a A1 o B1.
Avísame si puedo aclarar un poco las cosas.
¿Existe realmente una sintaxis de bucle for como la primera está presente en java? –
@ChandraSekhar: [for-each loop java] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html). – RanRag
@ChandraSekhar RanRag tiene razón. Sin embargo, eso no es relevante para la pregunta.Tal vez el OP simplemente reescribió su código, no copió/pegó y, por lo tanto, pensó en su idioma preferido. –