Как работает этот код?

Здравствуйте! Есть вот такой код:

class ParaByRef {
    int x, y;

    ParaByRef(int x, int y) {
        this.x = x;
        this.y = y;
    }

    void callByRef(ParaByRef o) {
        o.x = o.x + this.x;
        o.y = o.y + this.y;
    }
}

class ParaByRefDemo {

    public static void main(String[] args) {
        ParaByRef p = new ParaByRef(2,3);
        ParaByRef q = new ParaByRef(3,2);

        System.out.println("q.x = " + q.x);
        System.out.println("q.y = " + q.y);

        p.callByRef(q);

        System.out.println("q.x = " + q.x);
        System.out.println("q.y = " + q.y);
    }
}


Который выводит вот такой результат:
q.x = 3
q.y = 2
q.x = 5
q.y = 5

Не могу понять почему последние q.x и q.y равны 5.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 2
evgeniy8705
@evgeniy8705
Повелитель вселенной
ParaByRef p = new ParaByRef(2,3); // p.x = 2; p.y = 3;

ParaByRef q = new ParaByRef(3,2); // q.x = 3; q.y = 2;

p.callByRef(q);
// q.x = q.x + p.x; (q.x = 3 + 2 = 5)
// q.y = q.y + p.y;  (q.y = 2 + 3 = 5)
Ответ написан
@Openmen Автор вопроса
Все понял. Мне нужно быть внимательнее. Нужно было обратить внимание на это p.callByRef(q);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы