2

muy buenas tardes! estoy aprendiendo java, aun muy verde, y he visto este ejercicio por internet que pregutna cuantos objetos estamos creando con este codigo pero no me queda claro si 2 o 3, alguien me puede ayudar? muchas gracias!

Object a = null; 
Object b = new Object();
Object a = b;
Sergi
  • 21
  • 1
  • Puedes leerte este post: [Definición y diferencia de objeto e instancia en Java](https://es.stackoverflow.com/q/236373/107347) – Orlando De La Rosa May 28 '19 at 18:38
  • 2
    tal cual esta tu codigo esta mal, porque no puedes definer `Object a` mas de una vez, eso es un error de compilacion el cual indicara que la variable ya existe. Suponiendo que deberia ser `a = b;` entonces estas declarando 2 variables las cuales apuntan a la misma instancia. – Orlando De La Rosa May 28 '19 at 18:45
  • muchas gracias! ;) – Sergi May 28 '19 at 18:50

3 Answers3

1

Se crea un objeto

Object a = null; 

Define una variable a que apunta a un objeto. Pero no hay objeto, apunta a null.

Object b = new Object();

Vale, esto sí que crea un objeto y asigna la referencia a la variable b

Object a = b; // [SIC] Como ya te han explicado, conflicto de identificador de variable con la primera línea. Asumiremos que la primera línea no está.

Define una variable a, y hace que esa variable a apunte a la misma referencia que la variable b. Pero ambas apuntan al mismo objeto.

En general, para crear un objeto usas new (por supuesto, si llamas a un método que te devuelve un objeto ese método puede hacer el new internamente y devolverte el objeto).

SJuan76
  • 10,771
  • 5
  • 17
  • 31
-1

No soy experto en programación ni mucho menos, soy un estudiante al igual que tu, pero yo estudio python y c++, yo te digo que en ese cacho de código, null no lo podemos considerar ni un objeto ni un tipo por lo tanto estas creando 2 objetos uno de ellos sin valor asignado, es decir está vacío, otro con el valor "b".

PD: Esa es mi humilde opinión si me he confundido pido que me avisen de ello.

Rafael
  • 148
  • 5
-1

Mi opinión es que están creando dos, pero al final uno consume al otro y por todo queda solo un objeto, pero la respuesta es que se están creando dos objetos, el primero se inicia en null, el segundo se dice que es nuevo objeto y el tercer que iniciamos en null dice que será igual al segundo objeto. Por ello se inicia a en null porque después obtendrá valor del otro objeto.

Bladi_ST
  • 1
  • 3
  • *el primero se inicia en null* Eso no tiene ningún sentido. *null* no es un objeto. Y *a* y *b* son **variables**, no objetos. – SJuan76 May 28 '19 at 19:22