Java: el estado del objeto no cambia después de la llamada al método [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Es Java "paso por referencia" o "paso por valor"? 78 respuestasBeginner java question, pero no puedo entender cómo funciona call-by-Value (o Reference) en el siguiente ejemplo:
Cómo es que el valor de la cadena no se modifica después de salir del método mientras que mi objeto de cadena personalizado sí. ? Lo mismo con otras clases como Date ..
public class StringMadness {
public static void main(String[] args) {
String s = "Native String";
CustomStringObject cs = new CustomStringObject();
System.out.println("Custom String Before: " + cs.str);
hello(cs);
System.out.println("Custom String After: " + cs.str);
System.out.println("Native String Before: " + s);
hello(s);
System.out.println("Native String After: " + s);
}
private static void hello(String t) {
t = "hello " + t;
}
private static void hello(CustomStringObject o) {
o.str = "hello " + o.str;
}
}
class CustomStringObject {
String str = "Custom String";
}