Algunos conocimientos sobre el paso de parámetros no son exhaustivos.
llamada por valor: pasar por valor
llamar por referencia: pasar por referencia
Caracteristicas:
Llamada por valor. El valor no cambia, es decir, la operación es una copia del valor, por lo que el valor original no cambia.
la llamada por referencia cambia el valor, pero no cambia la dirección de referencia del parámetro real. Se puede entender que otra referencia también apunta al mismo objeto.
Código:
public static void st(String str){
// System.out.println(str.hashCode());
str = str.replace("1","2");
// System.out.println(str.hashCode());
}
public static void st1(StringBuffer stringBuffer){
stringBuffer.append("S");
stringBuffer = new StringBuffer("567");
stringBuffer.append("890");
}
public static void main(String...args){
String s = "123";
st(s);
System.out.println(s);
System.out.println(s.hashCode(););
StringBuffer str1 = new StringBuffer("sss");
System.out.println(str1);
st1(str1);
System.out.println(str1);
}
Resultado de salida:
48690
49651
123
48690
sss
sssS
El reemplazo de la clase String devuelve un nuevo objeto String, y luego la referencia de str apunta al nuevo objeto. En el método st1, StringBuffer append (); el método opera sobre el valor del objeto original y devuelve el objeto original.
stringBuffer =
new
StringBuffer (
"567"
), y esta oración se referirá a stringBuffer que apunta al nuevo objeto.