Bienvenidos sean a este post, hoy hablaremos sobre uno de los metodos para la clase String.
Este metodo es un tanto particular dado que nos devuelve una representacion canonica de un objeto de tipo String, esto si lo analizamos asi en crudo no tiene mucho sentido pero con los ejemplos nos va a quedar un poco mas claro pero antes veamos su sintaxis:
variable.intern()
String variable = new String(texto).intern();
Estas son las dos formas que podemos utilizar para este metodo para entenderlo mejor vamos a aplicar nuestro primer ejemplo:
intern.java
public class intern
{
public static void main(String[] args)
{
String cdn1 = new String("Bienvenidos a tinchicus.com");
String cdn2 = new String("Bienvenidos a tinchicus.com");
System.out.println(cdn1.intern());
System.out.println(cdn2.intern());
System.out.println(cdn1 == cdn2);
System.out.println(cdn1.equals(cdn2));
}
}
El ejemplo es bien simple, en este caso vamos a crear dos objetos de tipo String llamados cdn1 y cdn2, en ambos guardaremos el mismo texto pero generaremos una nueva ubicacion en memoria por medio de new, luego mostraremos las representaciones canonicas de ambos objetos, para despues mostrar la comparacion entre ambos objetos y finalmente si ambos son iguales, compilemos y veamos su salida:
tinchicus@dbn001vrt:~/lenguajes/java$ java intern
Bienvenidos a tinchicus.com
Bienvenidos a tinchicus.com
false
true
tinchicus@dbn001vrt:~/lenguajes/java$
La unica curiosidad que mas nos interesa es la devolucion de la comparacion entre objetos, en este caso nos devolvio false porque si bien ambos textos son iguales (como vemos en el caso del equals) al estar en distintas ubicaciones de memoria no son iguales al 100%, vamos a tomar el codigo anterior y lo modifcaremos de la siguiente manera:
intern.java
public class intern
{
public static void main(String[] args)
{
String cdn1 = new String("Bienvenidos a tinchicus.com").intern();
String cdn2 = new String("Bienvenidos a tinchicus.com").intern();
System.out.println(cdn1.intern());
System.out.println(cdn2.intern());
System.out.println(cdn1 == cdn2);
System.out.println(cdn1.equals(cdn2));
}
}
La unica modificacion que realizamos fue simplemente agregar el intern detras de los objetos si observan, el resto sigue siendo exactamente lo mismo a lo explicado anteriormente, compilemos y veamos su salida:
tinchicus@dbn001vrt:~/lenguajes/java$ java intern
Bienvenidos a tinchicus.com
Bienvenidos a tinchicus.com
true
true
tinchicus@dbn001vrt:~/lenguajes/java$
Como podemos ver ahora la comparacion nos devolvio un true, esto es debido a que al usar intern se registro el texto que utilizamos en el primer objeto y al crear el segundo en lugar de crear un nuevo espacio en memoria simplemente apunta a la seccion donde registro dicho texto, en caso de no existir dicho texto lo registrara y para proximos usos apuntara el mismo, esto es util para no desperdiciar memoria en textos duplicados, creo que esta es la mejor forma que encontre para mostrar para que sirve este metodo.
En resumen, hoy hemos visto intern, que es, para que sirve, como se utiliza, como nos ayuda y un par de ejemplos practicos para verlo en accion, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.00
