Inicio > Cursos > Java > Strings en Profundidad
JavaStrings, Arrays y MétodosLección 7 de 15

Strings en Profundidad

String en Java es un objeto especial e inmutable: una vez creado, no se puede modificar. Cuando haces "Hola" + " Mundo", Java crea tres objetos String: "Hola", " Mundo", y "Hola Mundo". En un loop que concatena strings 1000 veces, creas 1000 objetos intermedios innecesarios.

Por eso existe StringBuilder: es un buffer mutable que acumula texto y solo crea el String final cuando llamas toString(). Úsalo siempre que construyas strings dinámicamente en loops.

La comparación de Strings es un error clásico de Java: nunca uses == para comparar strings. El operador == compara referencias de memoria (si son el mismo objeto), no el contenido. "abc" == "abc" puede ser true o false dependiendo de cómo se crearon los Strings. Siempre usa .equals() para comparar el contenido.

La clase String tiene docenas de métodos útiles: substring para extraer partes, split para dividir por separador, trim para eliminar espacios, replace para sustituir, y más.

String s = "Hola, Mundo Java";

// Métodos básicos
System.out.println(s.length());         // 16
System.out.println(s.toUpperCase());    // HOLA, MUNDO JAVA
System.out.println(s.toLowerCase());    // hola, mundo java
System.out.println(s.trim());           // sin espacios
System.out.println(s.contains("Java")); // true
System.out.println(s.startsWith("Hola")); // true
System.out.println(s.indexOf("Mundo")); // 6
System.out.println(s.substring(6));     // Mundo Java
System.out.println(s.substring(6, 11)); // Mundo
System.out.println(s.replace("Java", "Kotlin"));

// String.format (equivalente a printf)
String msg = String.format("Precio: $%.2f", 9.99);
String fecha = String.format("%d/%02d/%04d", 5, 3, 2024);

// split y join
String csv = "Ana,Bob,Carlos,Diana";
String[] nombres = csv.split(",");
String unido = String.join(" - ", nombres);

// chars y comparación
char primera = s.charAt(0); // 'H'
byte[] bytes = s.getBytes();
bool igual = "abc".equals("abc");       // true
bool ignorar = "abc".equalsIgnoreCase("ABC"); // true

// StringBuilder para concatenaciones
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append("item").append(i).append(",");
}
String resultado = sb.toString();

// String.valueOf y conversiones
String numStr = String.valueOf(42);    // "42"
String boolStr = String.valueOf(true); // "true"
int num = Integer.parseInt("100");     // 100
double d = Double.parseDouble("3.14"); // 3.14
Consejo⚡ Nunca concatenes strings en bucles con +. Crea N objetos intermedios. StringBuilder es mutable y muy eficiente para construcción incremental.
← Colecciones y GenericsArrays y Matrices →

Practica esta lección

Resuelve los ejercicios del curso de Java en la app, gratis y con corrección automática.

Empezar a practicar