"¿Qué opinas, Amigo? ¿Cuál es la clase de Java más popular después de int?"

"Ya me diste un spoiler en el título de la lección, Ellie. ¡Es String!"

"De hecho, es un spoiler. StringSe usa absolutamente en todas partes. Tiene un montón de métodos útiles que es mejor que conozcas.

"La Stringclase es la única clase además de los tipos primitivos cuyos literales se pueden usar en una switchdeclaración; el compilador maneja la adición de cadenas y los objetos String de una manera especial; Stringlos objetos se almacenan en la memoria de una manera especial. Básicamente, la Stringclase es muy clase especial.

"Además, la Stringclase tiene un montón de clases auxiliares cuyo propósito es simplificar aún más el trabajo con cadenas en Java. Cuando aprendas todo esto, muchas cosas serán mucho más fáciles de hacer para ti".

"No puedo esperar".

"Bueno, comenzaremos desde el núcleo mismo de este ecosistema: la organización de la Stringclase. La estructura de la Stringclase es realmente muy simple: dentro hay una matriz de caracteres ( charmatriz) que almacena todos los caracteres de la cadena. Para ejemplo, así es como se almacena la palabra 'Hola':

Estructura de la clase String

Es importante.

En realidad, esto no es del todo exacto. Debido a que la Stringclase es muy importante, utiliza muchas optimizaciones y los datos no se almacenan internamente como una matriz de caracteres, sino simplemente como una matriz de bytes.

Métodos de la clase String

La Stringclase tiene muchos métodos: ¡solo tiene 18 constructores! Entonces, a continuación enumeraré solo los más utilizados:

Métodos Descripción
int length()
Devuelve el número de caracteres de la cadena.
boolean isEmpty()
Comprueba si la cadena es una cadena vacía
boolean isBlank()
Comprueba que la cadena contiene solo caracteres de espacio en blanco: espacio, tabulador, nueva línea, etc.
char charAt(int index)
Devuelve el carácter en la posición de índice en la cadena.
char[] toCharArray()
Devuelve una matriz de los caracteres (una copia) que componen la cadena
byte[] getBytes()
Convierte una cadena en un conjunto de bytes y devuelve la matriz de bytes.
String[] split(String regex)
Divide una cadena en varias subcadenas.
String join(CharSequence delimiter, elements)
Une varias subcadenas juntas
String intern()
Pone una cadena en el grupo de cadenas.

"¡Eso se ve muy bien!"

"Escribamos un programa que convierta la ruta de un archivo del estilo Unix al estilo Windows. Unix usa el /carácter para separar carpetas, mientras que Windows usa el \carácter.

Solución 1. Usar una charmatriz

Código notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Cree un objeto Scanner.
Lea una línea desde la consola.

Convierta una cadena en una matriz de caracteres.
Repita los caracteres.
Si el carácter es /,
reemplácelo con \. No te olvides de escapar.

Cree una nueva cadena basada en la matriz de caracteres.
Muestre la cadena.

Solución 2. Usando los métodos split()y join():

Código notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String array[] = path.split("\\/");


String result = String.join("\\", array);


System.out.println(result);
Cree un objeto Scanner.
Lea una línea desde la consola.

Convierta una cadena en una matriz de cadenas . El /carácter se usa como separador (las dos barras adicionales son el resultado del doble escape).
Concatene todas las cadenas en la matriz de cadenas . El \se usa como separador (lo vemos escapado).

Muestre la cadena.

Solución 3. Usando el replace(char oldChar, char newChar)método:

Código notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Cree un objeto Scanner.
Lea una línea desde la consola.

Simplemente reemplace un carácter por otro
(el segundo tiene escape).
Muestre la cadena.

"Me gustó más la tercera solución. Pero practicaré las tres".

"Bien hecho, Amigo. Veo que ya estás impaciente por poner en práctica tus nuevos conocimientos. La lección ha terminado".