"¡Hola, amigo!"

"Pero, Bilaabo, ya me has dicho hola".

"¿En serio? Bueno, todavía me gusta comenzar cada lección con esa frase".

"Hoy vamos a estudiar la clase String en profundidad".

"Pero ya sé todo al respecto. Incluso sé que la clase String es inmutable".

"La clase String tiene 46 métodos. ¿Cuántos de ellos conoces?"

"No más de diez. En realidad, probablemente alrededor de 5 como máximo".

"Entonces escucha".

"Los creadores de Java notaron que la mayoría de las cadenas en los programas no están destinadas a ser modificadas, pero a veces se modifican de todos modos. Es muy molesto cuando creas una cadena, guardas algo importante en ella, la pasas al método de otra persona y se cambia. Para evitar que esto suceda, decidieron crear cadenas tanto mutables como inmutables".

"La clase String es para cadenas inmutables y la clase StringBuilder es para cadenas mutables. Los objetos de estas clases se convierten fácilmente al otro tipo. En la mayoría de los casos, los desarrolladores de Java simplemente necesitan String, lo que demuestra que los creadores de Java tenían razón".

"Entonces, si necesito una cadena, uso la clase String. Y si necesito una cadena mutable, ¿entonces uso la clase StringBuilder ?"

"Sí. En realidad, hay otra clase llamada StringBuffer. Es una copia de StringBuilder, excepto que todos sus métodos se declaran sincronizados , de modo que se puede acceder al objeto desde diferentes subprocesos del programa".

"¿Y qué hay de este ejemplo? ¿No se cambia la cuerda aquí?"

String s = "cat";
s = s + "-" + s;

"No. Hay dos objetos String aquí: «gato» y «gato-gato». El segundo se crea usando el primero, pero el primer objeto no cambia. En realidad, las cosas son mucho más interesantes aquí. Aquí está el código el compilador genera cuando compila tu ejemplo:"

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

"Entonces, StringBuilder casi siempre se usa para crear nuevas cadenas, pero a veces el compilador simplemente hace todo el trabajo por usted. Pero su versión es más simple, ¿no cree?"

"Sí, es increíble que Java tenga un compilador tan avanzado".

"Bueno, ahora veamos los métodos de la clase String:"

1) ¿Cómo encuentro la longitud de una cadena?

"El método de longitud devuelve la longitud de una cadena (la cantidad de caracteres que contiene)".

Métodos) Ejemplo(s)
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) ¿Cómo obtengo un carácter de una cadena?

"El método charAt devuelve un carácter de una cadena por su índice. Los índices de caracteres comienzan en 0.

Métodos) Ejemplo(s)
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) ¿Cómo obtengo caracteres de una cadena?

¿Cómo obtengo caracteres de una cadena?

Métodos) Ejemplo(s)
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) ¿Cómo comparo cadenas?

"El método equals verifica si las cadenas coinciden, y el método equalsIgnoreCase verifica si las cadenas coinciden cuando se ignora el caso.

Métodos) Métodos)
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) ¿Cómo pongo todas las letras en una cadena en mayúsculas o minúsculas?

"El método toUpperCase devuelve una copia de String con todas las letras mayúsculas".

"El método toLowerCase devuelve una copia de String con todas las letras en minúsculas".

Métodos) Ejemplo(s)
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Resultado:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

Resultado:

s == "good news, everyone!";

6) ¿Cómo elimino espacios al principio y al final de una cadena?

"El método de recorte devuelve una copia de una cadena sin espacios en blanco al principio y al final".

Métodos) Ejemplo(s)
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Resultado:

s == "Good news, everyone!";