Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Una duda con referencias a objetos

Estas en el tema de Una duda con referencias a objetos en el foro de Java en Foros del Web. utilizando una cola implemete un algoritmo que me permitiese utilizarla como si fuera un pila una pila, nunca imagine que un algoritmo tan fácil se ...
  #1 (permalink)  
Antiguo 30/03/2013, 07:27
 
Fecha de Ingreso: marzo-2013
Mensajes: 2
Antigüedad: 11 años, 1 mes
Puntos: 0
Una duda con referencias a objetos

utilizando una cola implemete un algoritmo que me permitiese utilizarla como si fuera un pila una pila, nunca imagine que un algoritmo tan fácil se me pudiera complicar tanto en java.

Código:
    public void insertar(Object dato){
	cola.insertar(dato);
	while(dato!=cola.primero()){ // mientras la referencia dato no apunte al mismo que está al inicio en la cola 
	    Object x = cola.eliminar(); // saca ese elemento
	    cola.insertar(x); // e insertalo al final
	}
    }
en el main un problema al utilizar mi clase parece funcionar dependiendo de los datos que inserte

por ejemplo:

pila.insertar(8);
pila.insertar(5);
pila.insertar(9);
pila.insertar(21);
pila.insertar(77);
pila.insertar(13);

pila = [13,77,21,9,5,8]
funcionaba de maravilla!!
pero en casos como este actua rarisimo

pila.insertar(5);
pila.insertar(5);
pila.insertar(5);
pila.insertar(21);
pila.insertar(77);
pila.insertar(5);
pila = [5,5,5,5,77,21]

lo unico que pude notar es que funciona de manera correcta
únicamente si inserto los datos de esta manera

pila.insertar(new Integer(5));
pila.insertar(new Integer(5));
pila.insertar(new Integer(5));
pila.insertar(new Integer(21));
pila.insertar(new Integer(77));
pila.insertar(new Integer(5));
pila = [5,77,21,5,5,5]

pareciera que al crear los número arriba solo creara un objeto
y lo reciclara siempre

alguien me pudiese explicar bien que es lo que sucede?
  #2 (permalink)  
Antiguo 30/03/2013, 11:54
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Una duda con referencias a objetos

Un int y un Integer aunque a primera vista son iguales, no lo son. Uno es una primitiva, el otro es un objeto. En ocasiones es necesario que un int sea un objeto (y viceversa), por lo que se convierten automáticamente (autoboxing).

El caso es muy similar al de las String, si conviertes automáticamente un int a Integer, usará el mismo objeto para el mismo número, si creas tú el Integer, son objetos diferentes.


Prueba variando int y Integer, y lo verás

Código Javascript:
Ver original
  1. Integer[] in = new Integer[2];
  2.        
  3.         in[0] = 3;
  4.         in[1] = new Integer(3);
  5.        
  6.         System.out.println(in[0]==in[1]);
  7.         System.out.println(in[0].equals(in[1]));
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase, objetos, referencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:23.