У меня есть простой класс IntList, у которого есть метод iterativeSize ().
public class IntList {
public int first;
public IntList rest;
public IntList(int f, IntList r) {
this.first = f;
this.rest = r;
}
public static void main(String[] args) {
IntList L = new IntList(15, null);
L = new IntList(10, L);
L = new IntList(5, L);
L.iterativeSize();
System.out.println(L.first) // this gives 5 instead of null
}
public int iterativeSize() {
IntList x = this;
int count = 0;
while (x != null) {
count++;
x = x.rest;
}
return count;
}
Как я и предполагал, исходный L должен стать нулевым из-за цикла while, который завершается только тогда, когда x == null.Поскольку x имеет адрес памяти L, L должен был стать нулевым после:
L.iterativeSize ();
Но это не так.Почему L не изменяется, хотя x (который имеет адрес памяти L) стал нулевым?