Sobes.tech
Junior
151

Come vengono passati i parametri nei metodi in Java?

Risposta dell'AI

sobes.tech AI

In Java, i parametri dei metodi vengono passati per valore (pass-by-value).

Tipi primitivi:

  • Viene passata una copia del valore primitivo. Modificare il parametro all'interno del metodo non influisce sulla variabile originale esternamente.
// Esempio per tipo primitivo
public void changeValue(int x) {
    x = x + 10; // La copia di x all'interno del metodo viene modificata
}

// Uso:
int original = 5;
changeValue(original);
// original rimarrà 5

Oggetti (tipi di riferimento):

  • Viene passata una copia del riferimento all'oggetto. Entrambi i riferimenti (quello originale e quello nel parametro del metodo) puntano allo stesso oggetto in memoria.
  • Modificare lo stato dell'oggetto (ad esempio, chiamare un setter, modificare campi) tramite il riferimento passato all'interno del metodo influirà sull'oggetto originale.
  • Riassegnare il parametro a un nuovo oggetto all'interno del metodo non cambierà il riferimento originale esternamente.
// Esempio per tipo di riferimento (oggetto)
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); // Cambia lo stato dell'oggetto originale
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Il parametro obj ora punta a un nuovo oggetto, la referenza originale non cambia
}

// Uso:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject ora ha value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject ancora punta all'oggetto con value = 50

In breve: viene passato il valore della referenza (il suo indirizzo), non l'oggetto stesso. Questo permette di modificare l'oggetto tramite questa referenza, ma non di cambiare la referenza originale a un altro oggetto.