Duda con creación de objetos en Java

Muy buenas, recientemente hemos hecho un examen de programación en Java.
Yendo al grano, hay un apartado de un ejercicio en el que concretamente nos pide crear varios objetos en bucle de una clase Alumno creada anteriormente. Al crearlos obviamente, yo usé un array de tamaño 3 de objetos de la clase Alumno y segun recorro el array hasta el final voy creando los objetos tal que asi (lo de anio lo pongo asi porque creo que pasaba algo con la ñ o no se que en java, igual me equivoco xD):
Imagen
Me lo ha dado por valido porque está bien de esa forma, no hay mas xD, aunque nuestra profesora nos dijo que era para que los crearamos sin array, como lo hizo ella en esta captura:
Imagen
De esa forma lo que está haciendo es en cada vuelta del for sobrescribir el mismo objeto una y otra vez ¿no?
Hasta donde se, dos objetos no podrian tener el mismo puntero de memoria ¿no? a no ser que sea un array cuyo puntero es el indice en el que está guardado el objeto...
El caso es que aunque habiamos visto lo basico de arrays, yo ya me los habia visto y habia aprendido a usarlos y fue gracias a ello que usé el array para los alumnos, pero por lo visto el objetivo de nuestra profesora era que pensaramos como se haría sin array.
Basicamente esa es mi duda, si lo que está haciendo de esa forma es sobrescribir todo el rato el mismo objeto pero con otros atributos, porque cuando me he puesto a ver la solución me he quedado un poco WTF :-?
Qué te pide el enunciado ? Porque si sólo tienes que mostrar los atributos por consola y acumular el numeroSuerte no tiene ninguna utilidad guardarlos en un array. Y por qué de tamaño 3 y no de tamaño 10 o 27 ? De obvio no le veo mucho.
Crear la clase alumno con una serie de atributos, los métodos get y set, hacer método equals y un método número de la suerte. Luego crear un main en el que creas 10 alumnos (en las capturas puse 3 para probar), acumular la suma del número de la suerte de los 10 alumnos y ver los atributos de cada alumno con toString.
A lo que me refiero con el post, no es a si mi solución es la mas rápida o eficaz para lo que pide el enunciado (ibamos muy justos de tiempo en el examen y hacer los objetos guardandolos en un array fue lo primero que se me ocurrió, ademas de ser lo que mejor se me daba), si no que que es exactamente lo que pasa en la solución que nos da la profesora, pues nunca nos puso un ejercicio de crear objetos en un bucle sin guardarlos en un array ni nada, y quería saber si lo que hace es, con ese for, reemplazar todo el rato el mismo objeto a1 pasandole parámetros distintos, porque me acordé de que si guardas objetos en un array, el índice es el que indica la posición de memoria donde se guardan y no la variable que le asignas a modo de "nombre", pero si no los vas a guardar en un array entonces ya dependes de la variable que le asignes al objeto. Es una chorrada pero quería asegurarme que lo que hace es eso, crear un alumno a1, acumular su número de la suerte y listar los atributos con toString y luego sobrescribir el mismo objeto pero pasandole otros parámetros (vamos que en realidad no crea 10 objetos como tal, si no que crea el mismo de forma distinta 10 veces) ¿Es eso lo que hace no?
Salu2
Técnicamente no lo sobreescribe, ya que cada vez que termina una iteración del bucle todas las variables que se declaran dentro dejan de existir (lo que se conoce como el ámbito de una variable). En cada iteración crea el objeto Alumno con X atributos, lo saca por consola y cuando termina la iteración este objeto deja de existir. Así sucesivamente hasta que se deja de cumplir la condición del bucle.

Lo de tener un array o cualquier otra colección donde guardar los objetos es totalmente independiente de la creación de estos. Una cosa son los objetos y todo su tratamiento y otra las colecciones, no tienes por qué guardar los objetos en una colección si no lo necesitas (lo digo por lo que comentas que nunca os han puesto ejercicios de objetos sin guardarlos en arrays).
Metalhead escribió:Técnicamente no lo sobreescribe, ya que cada vez que termina una iteración del bucle todas las variables que se declaran dentro dejan de existir (lo que se conoce como el ámbito de una variable). En cada iteración crea el objeto Alumno con X atributos, lo saca por consola y cuando termina la iteración este objeto deja de existir. Así sucesivamente hasta que se deja de cumplir la condición del bucle.

Lo de tener un array o cualquier otra colección donde guardar los objetos es totalmente independiente de la creación de estos. Una cosa son los objetos y todo su tratamiento y otra las colecciones, no tienes por qué guardar los objetos en una colección si no lo necesitas (lo digo por lo que comentas que nunca os han puesto ejercicios de objetos sin guardarlos en arrays).

Gracias por la respuesta, me ha quedado mucho mas claro [beer]
4 respuestas