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.
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.
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.
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.
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.
Muchas gracias por la ayuda Adriana,me quedo claro.