Назад к задачам
Junior — Senior
3

Влияние методов на поля экземпляра и статические переменные

Компании, где спрашивали:

Веб-мост
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Дан класс, содержащий статическое поле, поле, объявленное как final, обычное поле экземпляра и метод doIt, который меняет значения этих полей и создаёт новый объект. В main создаётся объект, вызывается doIt, после чего нужно определить, какие значения будут у переменных.

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;
        a.y = 13;
        a = new A(2);  // новый объект
        a.x = 21;
        a.y = 22;
    }

    public static void main(String[] args) {
        A a = new A(1);      // создаём объект с instanceNumber = 1
        a.x = 1;
        a.y = 2;
        int z = 3;

        A.doIt(z, a);        // вызываем метод

        // Вопросы:
        // a = ? // 1 или 2
        // a.instanceNumber = ?
        // a.x = ?
        // a.y = ?
        // z = ?
    }
}