Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Diferencia entre instancias un string y asignarlo directamente

Buenas que tal?Queria consultarles cual es la diferencia entre crear: "String cadena=new String("hola") ;" Que crearlo directamente,o sea así: " String cadena="hola"; " En el ejercicio dice que hay diferencias ,pero no aclara que diferencias hay.

2 respuestas
solución!

Hola Pablo, espero que estés bien.

Buena pregunta, cuando nosotros trabajamos con Strings en Java somos conscientes de que estamos trabajando con una clase que genera objetos.

String cadena1 = new String("hola mundo"); o String cadena2 = new String("hola mundo"); simplemente hemos asignado directamente la literal. En este caso aun que creemos la misma cadena en memoria, para Java son dos objetos diferentes. Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

En el caso de usar una asignación directa sin operador new String cadena1="hola alura"; o String cadena2="hola alura"; las dos variables apuntan al mismo y eso se debe a que Java a nivel de maquina virtual cada vez que generamos una literal las almacena en un pool para su posterior reutilización.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Esto en principio nos puede parecer poco importante pero si que lo es, vamos a ejecutar en un par de bucles for, por ejemplo, con las dos opciones efectivamente la diferencia de rendimiento siempre que tengamos bloques de cadenas reutilizables es mejor asignar directamente una literal al String porque cuando no genera nada mas que un objeto y lo mantiene en un pool por lo tanto debería ser más rápido...

Recuerda que si tienes alguna duda sobre el contenido, estaremos aquí para ayudarte.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Muchas gracias por la ayuda Adriana,me quedo claro.