Java przekazuje wszystko według wartości, więc jeśli użyjesz operatora przypisania w metodzie klasy, nie zmienisz oryginalnego obiektu.
Na przykład:
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);
}
}
zamierza drukować 2.
Mimo, że jeśli obiekt jesteś przejazdem w odniesieniu do jest zmienny można dokonać w nim zmian w sposób oni o czym myślisz.
Na przykład
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);
}
}
Drukuje 3 (zakładając MyMutableInt jest sposób prawidłowy toString()).
Oczywiście liczby całkowite Java są niezmienne, a więc nie można ich tak zmienić. Więc masz 2 opcje tutaj:
Uwaga: to nie działa w przypadku jakichkolwiek elementów pierwotnych. W tym celu będziesz musiał przejść z powrotem przez wartość zwrotu. Jeśli masz wiele wartości do zmutowania, musisz zawinąć je w obiekt, aby je zwrócić, więc możesz również użyć tej metody.
Używanie języka Java przebiega według wartości, więc nie można przekazać prymitywu i zmodyfikować wartości pierwotnej. Możesz przekazać tablicę na liczbach całkowitych, a następnie zmodyfikuj liczby całkowite w tablicy lub zwróć inną liczbę całkowitą. – camickr
http://stackoverflow.com/questions/5614562/how-to-pass-by-reference-in-java spojrzenie na to. – Bill
http://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference-vs-passing-by-value –