Java passa tutto in base al valore, quindi se si utilizza l'operatore di assegnazione in un metodo di classe non si sta modificando l'oggetto originale.
Ad esempio:
public class Main {
public static void main(String[] args) {
Integer i = new Integer(2);
setToThree(i);
System.out.println(i);
}
public static void setToThree(Integer i) {
i = new Integer(3);
}
}
sta per stampare 2.
Detto questo, se l'oggetto si sta passando un riferimento a è mutevole è possibile apportare modifiche ad esso in modo che stai pensando.
Ad esempio:
public class Main {
public static void main(String[] args) {
MyMutableInt i = new MyMutableInt(2);
setToThree(i);
System.out.println(i);
}
public static void setToThree(MyMutableInt i) {
i.set(3);
}
}
Ciò stamperà 3 (supponendo MyMutableInt ha un metodo corretto toString()).
Ovviamente gli integri Java sono immutabili e quindi non hanno la possibilità di essere modificati in questo modo. In modo da avere 2 scelte qui:
Nota: questo non funziona con primitivi di alcun tipo. Per questo dovrai passare indietro per valore di ritorno. Se si hanno più valori da mutare, è necessario raggrupparli in un oggetto per restituirli, quindi è possibile utilizzare questo metodo.
fonte
2013-05-12 05:42:51
L'utilizzo di Java passa per valore in modo da non poter passare in una primitiva e modificare il valore primitivo. È possibile passare in un array su numeri interi e quindi modificare gli interi nell'array o restituire un numero intero diverso. – camickr
http://stackoverflow.com/questions/5614562/how-to-pass-by-reference-in-java guarda questo. – Bill
http://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing-by-value –