¡Veamos un desafío con Java! Este es un tema que suele generar errores comunes al trabajar con colecciones (List, Map), APIs, o cualquier objeto mutable. Entenderlo evita bugs del tipo “¿Por qué mi objeto cambió… o no cambió?”.

Click aquí para desplegar la solución. 👈
✅ La respuesta correcta es la a: "Hola mundo".

✏️ Explicación: la variable `saludo` es mutable: cuando se llama a `modificar(saludo)`, Java pasa una copia de la referencia (dirección de memoria) al objeto original. `texto.append("mundo")` modifica el objeto original (porque `texto` apunta al mismo StringBuilder que `saludo`). `texto = new StringBuilder("Adiós")` no afecta al original: esta línea hace que `texto` pase a apuntar a un nuevo objeto ("Adios"), pero la referencia original (`saludo`) sigue apuntando a la posición de memoria que contiene "Hola mundo". Reasignar `texto` solo cambia la referencia local dentro del método `modificar()`. El saludo en `main()` nunca se entera del nuevo objeto.


Solución al desafío



Desafío Java 👇
Desafío Java número 8

Click aquí para una versión accesible de la infografía (apta para lectores electrónicos)
 

Desafío Java

¿Qué imprime?

public class Main {
    public static void main(String[] args) {
        StringBuilder saludo = new StringBuilder("Hola ");
        modificar(saludo);
        System.out.println(saludo);
    }

    static void modificar(StringBuilder texto) {
        texto.append("mundo");
        texto = new StringBuilder("Adios");
    }
}

Opciones:

a) Hola mundo

b) Hola

c) Adios

d) Hola mundo Adios