Guía de programación en Java > La clase String
Introducción
En el mundo de la programación, las cadenas de caracteres (“strings”) son fundamentales para manejar textos. Java ofrece la clase String
, que es una de las más utilizadas y versátiles del lenguaje. Esta clase forma parte del paquete java.lang
. Representa cadenas de texto y tiene una serie de características especiales que la hacen fundamental en la programación.
En esta sesión aprenderás:
- Las características de la clase
String
. - Sus métodos más comunes.
- Cuándo es conveniente usar
String
y cuándo no. - Ejemplos prácticos.
Características Especiales de la Clase String
Inmutabilidad
La clase String
es inmutable, lo que significa que una vez creada, su contenido no puede ser modificado. Cada vez que «modificas» una cadena, en realidad estás creando un nuevo objeto en memoria.
Ejemplo:
String saludo = "Hola";
saludo = saludo + " Mundo";
System.out.println(saludo);
- Se crea un nuevo objeto con el valor «Hola Mundo» y el anterior «Hola» queda sin uso.
- El objeto original «Hola» sigue existiendo en memoria (si no se recoge como basura).
- Esto puede afectar el rendimiento si manipulas muchas cadenas repetidamente.
Almacenamiento en el Pool de Strings
Cuando creas un objeto String
usando literales (ej. String texto = "Hola";
), Java lo almacena en un área especial llamada Pool de Strings para optimizar el uso de memoria. Si otro literal con el mismo valor es declarado, ambos apuntarán al mismo objeto.
String s1 = "Hola";
String s2 = "Hola";
System.out.println(s1 == s2); // true -> Ambos apuntan al mismo objeto en el pool.
Creación de Strings
Literal de Cadena
La forma más simple de crear un String
.
String saludo = "Hola";
Constructor de la Clase String
Permite crear un nuevo objeto String
.
String saludo = new String("Hola"); // Evita esta forma si no es necesario
Nota: Usar el constructor crea un nuevo objeto incluso si ya existe en el Pool de Strings. Es recomendable usar literales para aprovechar el String Pool.
Métodos Más Utilizados de la Clase String
1. length()
Devuelve la longitud de la cadena.
String texto = "Hola Mundo";
System.out.println(texto.length()); // Salida: 10
2. charAt(int index)
Devuelve el carácter en la posición especificada.
System.out.println(texto.charAt(0)); // Salida: H
3. substring(int beginIndex, int endIndex)
Extrae una parte de la cadena.
System.out.println(texto.substring(0, 4)); // Salida: Hola
4. equals(Object obj)
Compara si dos cadenas son iguales (sensibles a mayúsculas y minúsculas).
System.out.println("Hola".equals("hola")); // Salida: false
5. equalsIgnoreCase(String anotherString)
Compara ignorando mayúsculas y minúsculas.
System.out.println("Hola".equalsIgnoreCase("hola")); // Salida: true
6. toUpperCase()
y toLowerCase()
Convierte la cadena a mayúsculas o minúsculas.
System.out.println(texto.toUpperCase()); // Salida: HOLA MUNDO
System.out.println(texto.toLowerCase()); // Salida: hola mundo
7. trim()
Elimina los espacios en blanco al inicio y al final de la cadena.
String textoConEspacios = " Hola ";
System.out.println(textoConEspacios.trim()); // Salida: Hola
8. replace(char oldChar, char newChar)
Reemplaza todas las apariciones de un carácter por otro.
System.out.println(texto.replace('o', 'a')); // Salida: Hala Munda
9. contains(CharSequence s)
Verifica si una cadena contiene otra cadena.
System.out.println(texto.contains("Mundo")); // Salida: true
10. split(String regex)
Divide la cadena en partes según un patrón.
String[] palabras = texto.split(" ");
for (String palabra : palabras) {
System.out.println(palabra);
}
// Salida:
// Hola
// Mundo
Cuándo Usar la Clase String
- Texto constante o inmutable:
- Cuando necesitas trabajar con cadenas que no cambian durante la ejecución del programa.
- Operaciones ligeras de texto:
- Si solo necesitas concatenar o acceder a partes de una cadena.
- Datos que requieren alta legibilidad:
- Ejemplo: Mensajes, etiquetas, o nombres.
Cuándo NO Usar la Clase
String
- Manipulaciones frecuentes: Si necesitas modificar cadenas muchas veces, considera usar
StringBuilder
oStringBuffer
.
Ejemplo Práctico: Análisis de un Texto
Escribe un programa que analice un texto dado y cuente cuántas veces aparece una palabra específica.
Código:
import java.util.Scanner;
public class AnalisisTexto {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Introduce un texto:");
String texto = scanner.nextLine();
System.out.println("Introduce la palabra a buscar:");
String palabra = scanner.nextLine();
String[] palabras = texto.split(" ");
int contador = 0;
for (String p : palabras) {
if (p.equalsIgnoreCase(palabra)) {
contador++;
}
}
System.out.println("La palabra '" + palabra + "' aparece " + contador + " veces.");
}
}
Salida Esperada:
Introduce un texto:
Hola mundo hola Mundo
Introduce la palabra a buscar:
hola
La palabra 'hola' aparece 2 veces.
Ejercicios Propuestos
- Longitud y acceso a caracteres:
- Crea un programa que pida al usuario introducir una palabra y muestre:
- La longitud de la palabra.
- El primer y último caracter.
- Crea un programa que pida al usuario introducir una palabra y muestre:
- Comparar cadenas:
- Diseña un programa que pida al usuario dos frases y diga si son iguales o cuál es mayor lexicográficamente.
- Manipulación de texto:
- Solicita al usuario un texto y:
- Reemplaza todas las vocales con
*
. - Convierte todo a mayúsculas.
- Muestra solo las primeras 5 letras.
- Reemplaza todas las vocales con
- Solicita al usuario un texto y:
- Dividir cadenas:
- Pide al usuario una lista de palabras separadas por comas y muéstralas una por una.
- Buscar subcadenas:
- Diseña un programa que reciba una frase y una palabra, y diga si la palabra está contenida en la frase.
Resumen
- La clase
String
es fundamental para trabajar con texto en Java. - Es inmutable y almacena literales en el Pool de Strings.
- Proporciona una amplia gama de métodos para manipular y analizar cadenas.
- Para operaciones intensivas con texto, considera otras opciones como
StringBuilder
.
Con este conocimiento, estás listo para manipular texto de manera eficiente en tus programas. ¡Practica y experimenta con los ejemplos! 🚀
Deja una respuesta