Hay tantos conceptos que abarcar esta cuestión (Pass by Value, Pass by Rerefence, Inmutable).
Pero bue me voy a limitar a sacarte la duda.
Los String son INMUTABLE's, lo que significa que veamos="casa" (de fondo) hace un nuevo objecto (
new String("casa"))
Es decir el objecto
entrada no es el mismo que el del método, ocupan distintos espacios de memoria.
Para obtener el cambio tenés que capturar el NUEVO OBJ que te retorna el método.
Nota: esta cuestión NO se aplica a un objeto con UN atributo de tipo String (Pass by value)