Cześć
Mam problem ze zrozumieniem co to znaczy że parametry są przekazywane przez wartość. Może opiszę jak ja to rozumiem i ktoś mnie poprawi...
public class TestClass {
public static void main(String[] args) {
String x = "Ola";
System.out.println("x: " + x);
someOp(x);
System.out.println("x: " + x);
}
public static void someOp(String y) {
System.out.println("y: " + y);
y = "Ela";
System.out.println("y: " + y);
}
}
Przypisuje obiekt reprezentujący napis "Ola" do zmiennej x. Wypisuje wartość obiektu wskazanego przez zmienną x. Wywołanie metody someOp(), przekazuje zmienna referencyjną (to jest zmienna referencyjna?) x jako argument wywołania. Wartość tej referencji jest kopiowana do zmiennej lokalnej y. Wyświetlamy wartość zmiennej y po czym przypisujemy do niej inny obiekt (napis "Ela"). Dalej są wyświetlenia... Wynik to:
x: Ola
y: Ola
y: Ela
x: Ola
I teraz to co chcę zrozumieć - w momencie przypisania do zmiennej y inny obiekt (reprezentujący napis "Ela"), zmieniamy też pierwotną referencję na nową (na tą z napisem "Ela")? Ale co w przypadku gdzie przypiszemy zmienną y do zmiennej x... Czy przypisując nową wartość do zmiennej y tym samym zmieniam wartość dla zmiennej x (bo przecież wskazują na ten sam obiekt)?
I gdzie w tym wszystkim jest przekazywanie / wywołanie poprzez wartość?
Większość materiałów wykorzystałem ze strony LINK