¿Pasando una cadena por referencia en Java?

Estoy acostumbrado a hacer lo siguiente enC:

void main() {
    String zText = "";
    fillString(zText);
    printf(zText);
}

void fillString(String zText) {
    zText += "foo";
}

Y la salida es:

foo

Sin embargo, en Java, esto no parece funcionar. Asumo porque elString objeto escopiado en lugar depasado por referenciado. Pensé que las cuerdas eran objetos, que siempre se pasan por referencia.

¿Que esta pasando aqui?

Respuestas a la pregunta(14)

Su respuesta a la pregunta