Sobes.tech
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.