Lo que necesita saber sobre el uso de cadenas en Java
Una vez que empiece a aprender Java, la clase String captará su atención, gracias a sus propiedades únicas.
Puede crear y manipular cadenas en Java más fácilmente que otros lenguajes. Eso es porque la clase String ofrece varias características.
Según estas características, existen varios métodos para generar y editar cadenas según sus preferencias y necesidades. Del mismo modo, mucho dependerá de su aplicación y de dónde se deben usar las cadenas.
¿En qué se diferencian las cadenas de Java?
Si ha trabajado anteriormente con el lenguaje C, sabe que las cadenas en C son una matriz de caracteres (caracteres). Por otro lado, las cadenas de Java son inmutables y contienen caracteres Unicode.
Una de las características clave que hacen que las cadenas en Java sean únicas es la concatenación. Simplemente use el operador de suma "+" para unir dos o más cadenas. Esto es algo que no puede hacer con otros objetos Java, como Point o Circle .
Además, como se mencionó anteriormente, las cadenas de Java son inmutables, es decir, no puede modificarlas. Por ejemplo, métodos como toUpperCase () y toLowerCase () generan una cadena completamente nueva, en lugar de realizar cambios en el contenido de la cadena existente. Ahora su código devolverá esta cadena recién generada.
Otra área donde las cadenas son diferentes es cuando se trata de usar caracteres nulos para terminar cadenas en lenguajes como C. En Java, las cadenas son objetos soportados por matrices de caracteres. Si está buscando leer el contenido de su cadena de la forma en que las matrices de caracteres los representan, usar el método toCharArray () hará el trabajo.
Comparar cadenas en Java también es más conveniente que en otros lenguajes de programación. En lugar de escribir un largo bloque de código para comparar cadenas, puede utilizar el método equals () para comparar dos o más cadenas utilizadas en cualquier programa. Esto se debe principalmente a que, en Java, el método equals es anulado por la clase String, lo que hace que la comparación de cadenas sea pan comido.
En una nota similar, la búsqueda dentro de subcadenas en Java también es sencilla. Mientras usa expresiones regulares o métodos como lastIndexOf () e indexOf (), puede buscar segmentos de cadenas y devolver valores una vez que se identifica una coincidencia. También puede usar expresiones regulares para recortar y dividir diferentes cadenas y usarlas individualmente para una amplia gama de usos en cualquier programa.
¿Cómo se almacenan las cadenas en la memoria?
Ahora que sabe qué hace que las cadenas en Java sean diferentes y beneficiosas, exploremos la clase String. Si sabe una cosa o dos sobre la administración de memoria en Java, entonces debe haber tratado con sus dos entidades clave: montón y pila.
La pila se usa para ejecutar procesos y operaciones después de ser llamada por un programa Java, mientras que el montón almacena contenido, necesario para ejecutar y ejecutar código de manera efectiva. Entonces, ¿qué importancia tiene la gestión de la memoria en el caso de las cadenas?
Eso es porque la clase String y los literales de cadena en Java reciben un tratamiento diferente. Esto indica que a los literales de cadena se les asigna un espacio de almacenamiento único en la memoria del montón, denominado Pool de constantes de cadena. Por lo tanto, siempre que use cadenas literales para crear objetos de cadena en Java, String Constant Pool los almacena.
Por el contrario, cuando usa la palabra clave new para crear objetos de cadena, Java los tratará como cualquier otro objeto y los enviará al montón para su almacenamiento.
Ejemplo de literales de cadena
Ahora que sabe lo suficiente sobre los objetos de cadena, veamos un ejemplo de literales de cadena:
public class muostrings {
public static void main(String args[])
{
String himuo = "Hello World from MUO";
System. out .println (himuo);
}
}
Aquí, el literal de cadena creó el objeto String con contenido "Hello World from MUO". Java enviará este objeto a String Constant Pool.
Usando la nueva palabra clave
También puede utilizar la nueva palabra clave para generar objetos String.
El objeto de cadena de la cadena "himuo" con contenido "Hello World from MUO" ha sido generado por un literal de cadena y se enviará a String Constant Pool. Del mismo modo, los objetos de cadena también se pueden crear utilizando la nueva palabra clave de la siguiente manera:
public class muostringsobj {
public static void main(String args[]) {
char [] strArr = { 'M', 'O', 'U'};
String jStr = new String(strArr);
System. out .println( jStr );
}
}
El ejemplo anterior usa la nueva palabra clave para crear un objeto de cadena. Como se explicó anteriormente, se envían al montón, donde se almacenan con otras variables y objetos a la espera de ser ejecutados por el programa.
A estas alturas, debe tener curiosidad acerca de String Constant Pool, y con razón. Asigna espacio de grupo a objetos según el contenido del objeto de cadena. Después de que String Constant Pool recibe objetos, los comprueba para verificar si dos objetos contienen exactamente el mismo contenido.
¿Pueden dos objetos de cadena almacenar el mismo contenido?
Cuando se utiliza un literal de cadena para crear un nuevo objeto, Java Virtual Machine (JVM) revisa el contenido del objeto y evalúa si ya existe en el grupo. Cuando un objeto contiene contenido que ya está presente en el grupo, se devuelve la referencia del objeto sin crear el nuevo objeto. Si debe crear el nuevo objeto, debe asegurarse de que el contenido sea distinto y único.
Sin embargo, si usa la nueva palabra clave para crear una nueva cadena, se procesará de manera diferente. Cuando use la nueva palabra clave para crear una nueva cadena, se generará, independientemente de si contiene el mismo contenido que la cadena existente.
Esto indica que se permite que dos objetos de cadenas existentes almacenados en la memoria del montón tengan el mismo contenido; esto es diferente de los objetos de cadena almacenados en String Constant Pool. También puede probar esto con el operador "=="; devuelve verdadero si se comparan dos objetos con la misma dirección física.
public class comparingStrngs {
public static void main(String[] args)
{
String firstLiteral = "muo1";
String secondLiteral = "muo1";
System. out .println(firstLiteral == secondLiteral);
String firstKeyword = new String("muo2");
String secondKeyword = new String("muo2");
System. out .println(firstKeyword == secondKeyword);
}
}
Ahora puede comprender fácilmente las cadenas de caracteres en Java
En este artículo, aprendió en qué se diferencian las cadenas en Java, las formas de usar las cadenas en Java, la gestión de la memoria de las cadenas en Java y otros detalles importantes sobre cómo funcionan las cadenas. Para probar su comprensión, ¿por qué no escribir un programa Java para concatenar dos cadenas?