Cadenas en Java

Instrumentos de cuerda

Las cadenas son secuencias de caracteres. En Java, a Stringes un Object. Las cadenas no deben confundirse charya que los caracteres son literalmente un valor en lugar de una secuencia de caracteres. Aún puede usar 1 valor dentro de una Cadena, sin embargo, es preferible usarlo charcuando busca 1 carácter.

String course = "FCC"; System.out.println(course instanceof Object);

Salida:

true

Puede crear un objeto de cadena de las siguientes formas:

  1. String str = "I am a String"; //as a String literal
  2. String str = "I am a " + "String"; //as a constant expression
  3. String str = new String("I am a String"); //as a String Object using the constructor

Quizás estés pensando: ¿Cuál es la diferencia entre los tres?

Bueno, el uso de la newpalabra clave garantiza que se Stringcreará un nuevo objeto y se asignará una nueva ubicación de memoria en la Heapmemoria (haga clic aquí para obtener más información). Los literales de cadena y las expresiones de cadena constantes se almacenan en caché en tiempo de compilación. El compilador los coloca en String Literal Pool para evitar duplicados y mejorar el consumo de memoria. La asignación de objetos es costosa y este truco aumenta el rendimiento al crear instancias de Strings. Si vuelve a utilizar el mismo literal, la JVM utiliza el mismo objeto. Usar el constructor como el anterior es casi siempre una opción peor.

En este fragmento de código, ¿cuántos objetos String se crean?

String str = "This is a string"; String str2 = "This is a string"; String str3 = new String("This is a string");

La respuesta es: se crean 2 objetos String. stry str2ambos se refieren al mismo objeto. str3tiene el mismo contenido pero newforzó la creación de un objeto nuevo y distinto.

Cuando crea un literal de cadena, la JVM verifica internamente, lo que se conoce como String pool, para ver si puede encontrar un objeto de cadena similar (en cuanto al contenido). Si lo encuentra, devuelve la misma referencia. De lo contrario, simplemente sigue adelante y crea un nuevo objeto String en el grupo para que se pueda realizar la misma verificación en el futuro.

Puede probar esto usando el tragar, la comparación rápida de objetos ==y el implementado equals().

System.out.println(str == str2); // This prints 'true' System.out.println(str == str3); // This prints 'false' System.out.println(str.equals(str3)); // This prints 'true'

Aquí hay otro ejemplo sobre cómo crear una cadena en Java utilizando los diferentes métodos:

public class StringExample{ public static void main(String args[]) { String s1 = "java"; // creating string by Java string literal char ch[] = {'s','t','r','i','n','g','s'}; String s2 = new String(ch); // converting char array to string String s3 = new String("example"); // creating Java string by new keyword System.out.println(s1); System.out.println(s2); System.out.println(s3); } }

Comparación de cadenas

Si desea comparar el valor de dos variables de cadena, no puede usar ==. Esto se debe al hecho de que comparará las referencias de las variables y no los valores que están vinculados a ellas. Para comparar los valores almacenados de las cadenas, utilice el método equals.

boolean equals(Object obj)

Devuelve verdadero si dos objetos son iguales y falso en caso contrario.

String str = "Hello world"; String str2 = "Hello world"; System.out.println(str == str2); // This prints false System.out.println(str.equals(str2); // This prints true

La primera comparación es falsa porque ”==” mira las referencias y no son iguales.

La segunda comparación es cierta porque las variables almacenan los mismos valores. En este caso "Hola mundo".

Tenemos varios métodos incorporados en String. El siguiente es un ejemplo del método String Length ().

public class StringDemo { public static void main(String args[]) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); System.out.println( "String Length is : " + len ); } }

Esto resultará en: String Length is : 17

La respuesta es: se crean 2 objetos String. Notas

  1. Los métodos de cadena utilizan índices de base cero, excepto para el segundo argumento de substring().
  2. La clase String es final, sus métodos no se pueden anular.
  3. Cuando JVM encuentra el literal de cadena, se agrega al grupo de literales de cadena.
  4. La clase String posee un nombre de método length(), mientras que las matrices tienen una longitud de denominación de atributo.
  5. En java, los objetos de cadena son inmutables. Inmutable simplemente significa inmodificable o inmutable. Una vez que se crea el objeto de cadena, sus datos o estado no se pueden cambiar, pero se crea un nuevo objeto de cadena.

Longitud de la cuerda

La "longitud" de una cadena es solo el número de caracteres que contiene. Entonces, "hola" es la longitud 2 y "Hola" es la longitud 5. El método length () en una cadena devuelve su longitud, así:

String a = "Hello"; int len = a.length(); // len is 5

Otros métodos de comparación que también se pueden utilizar en String son:

  1. equalsIgnoreCase (): - compara la cadena sin tener en cuenta la distinción entre mayúsculas y minúsculas.
String a = "HELLO"; String b = "hello"; System.out.println(a.equalsIgnoreCase(b)); // It will print true
  1. compareTo: compara el valor lexicográficamente y devuelve un número entero.
String a = "Sam"; String b = "Sam"; String c = "Ram"; System.out.println(a.compareTo(b)); // 0 System.out.prinltn(a.compareTo(c)); // 1 since (a>b) System.out.println(c.compareTo(a)); // -1 since (c

Original text