Z tego co wiem, to w Javie parametry zawsze są przekazywane przez wartość, dlatego zmiany dokonane w ciele funkcji nie będą widoczne poza nią. Należy jednak pamiętać, że w przypadku obiektów przekazywana jest referencja. Z tego wynika, że w przypadku typów podstawowych wartość zmiennej po wywołaniu takiej funkcji nie zmieni się, ale w przypadku obiektów będzie inaczej. Wystarczy wywołać wewnątrz funkcji metodę modyfikującą pole naszego obiektu, i zmiany będą widoczne poza tą funkcją. Megabanalny przykład:
public class A {
private int a;
public A(int a) {
this.a = a;
}
public void setA(int a) {
this.a = a;
}
public int getA() {
return this.a;
}
public String toString() {
return String.valueOf(this.a);
}
}
I kod obsługujący przykładową klasę:
public class Main {
public static void zmien(A a) {
a.setA(4);
}
public static void main(String[] args) {
A a = new A(3);
System.out.println(a);
zmien(a);
System.out.println(a);
}
}