Junior
¿Cómo se pasan los parámetros en los métodos en Java?
sobes.tech AI
Respuesta de la IA
En Java, los parámetros en los métodos se pasan por valor (pass-by-value).
Tipos primitivos:
- Se pasa una copia del valor del primitivo. Cambiar el parámetro dentro del método no afecta a la variable original fuera de él.
// Ejemplo para tipo primitivo
public void changeValue(int x) {
x = x + 10; // Se modifica la copia de x dentro del método
}
// Uso:
int original = 5;
changeValue(original);
// original seguirá siendo 5
Objetos (tipos referenciados):
- Se pasa una copia de la referencia al objeto. Ambas referencias (la original y la en el parámetro del método) apuntan al mismo objeto en memoria.
- Modificar el estado del objeto (por ejemplo, llamar a un setter, modificar campos) a través de la referencia pasada dentro del método afectará al objeto original.
- Reasignar el parámetro a un nuevo objeto dentro del método no cambiará la referencia original fuera de él.
// Ejemplo para tipo referenciado (objeto)
public class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public void modifyObject(MyObject obj) {
obj.setValue(100); // Se modifica el estado del objeto original
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // El parámetro obj ahora referencia a un nuevo objeto, la referencia original no cambia
}
// Uso:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject ahora tiene value = 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject todavía referencia al objeto original con value = 50
En resumen: Se pasa el valor de la referencia (su dirección), no el objeto en sí. Esto permite modificar el objeto a través de esa referencia, pero no cambiar la referencia original a otro objeto.