Junior — Senior
52
Разбор передачи аргументов в Java‑метод
Условие задачи
Перепишите код, учитывая особенности передачи параметров по значению и по ссылке. Опишите, что происходит, когда переменные z и a передаются в метод doIt(). Какие значения будут у a, a.instanceNumber, a.x, a.y и z после завершения метода? Каково действие строки a = new A(2); внутри метода и почему оно ведёт себя именно так?
public class A {
private static int y;
private final int instanceNumber;
private int x;
public A(int instanceNumber) {
this.instanceNumber = instanceNumber;
}
public String toString() {
return String.valueOf(instanceNumber);
}
private static void doIt(int i, A a) {
i = 11;
a.x = 12;
y = 13;
a = new A(2); // ?
a.x = 21;
y = 22;
}
public static void main(String[] args) {
A a = new A(1); // 1
a.x = 1;
y = 2;
int z = 3;
A.doIt(z, a);
}
}