Principiante pregunta java, pero no puedo entender cómo Call-by-valor (o de referencia) está trabajando en el siguiente ejemplo -Java - El estado del objeto no cambia después de llamada de método
¿Cómo es que no se modifica el valor de cadena después de que sale del método mientras está mi Objeto String personalizado. ? Lo mismo ocurre con otras clases como .. Fecha
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";
}
Ahh ... Lo veo. gracias ... Originalmente, mi 'hello (CustomStringObject o)' estaba instanciando una nueva instancia como en 'o = new CustomStringObject()' y noté que fuera del método hello, la instalación nunca tuvo ningún efecto. Esto es lo que provocó la pregunta. –
@Jon Buena explicación. El ejemplo de Foo ayuda. +1 –
Si la persona que llama pasa la referencia nula, entonces he observado que la modificación de llamada no se refleja en la persona que llama. ¿Por qué es así? –