Ver Mensaje Individual
  #3 (permalink)  
Antiguo 31/10/2013, 13:04
Avatar de Xerelo
Xerelo
 
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 8 meses
Puntos: 306
Respuesta: ¿Para que sirve este comando de java "intern()?

Es algo que nunca he tenido que utilizar y que implica aspectos bastante teóricos de java, pero ya que te has molestado en intentar entenderlo voy a dar mi interpretación aunque puedo estar equivocado.

Las String son un tipo de dato extraño en java, pueden ser primitivas y objetos a la vez.

Además existe una zona de memoria especial llamado pool de Strings donde se guardan un tipo de Strings, los literales "esto es un literal". Un literal sólo existe existe una vez en el pool, por lo qe cada vez que "crees" ese literal de nuevo, estarás recuperándolo del pool.

Sin embargo, como también son objetos, si los creas mediante su constructor o (new String) o otras clases (StringBuilder) ese String estará en el heap, la zona de memoria reservada a todos los objetos.

¿Qué sucede si comparas el mismo String que esá en el pool con uno que está en el heap?

Si lo haces con == será falso, porque un objeto del pool y del heap son dos objetos distintos.

Si lo haces con equals, te dirá que son iguales, porque equals digamos que sólo se preocupa de que tengan las mismas letras.

¿Para que sirve entonces intern?

Pues si lo llamas desde un String del pool o desde un String del heap, siempre te devolverá un String del pool (si no existe lo crea)

¿Para qué sirve?

A mí no me ha hecho nunca falta, aunque me suena de haber leído en alguna de las librerías que suelo usar.
__________________
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.