public static void a(long item) {

Если вызвать a(x), программа напечатает x в методе d, а затем x в методе a. Присваивание item = 20L меняет только локальный параметр d: long передаётся по значению.

Короткий ответ

Что ответить на собеседовании

Если вызвать a(x), программа напечатает x в методе d, а затем x в методе a. Присваивание item = 20L меняет только локальный параметр d: long передаётся по значению.

Подробный разбор

Ответ с пояснениями

Условие

public static void a(long item) { b(item); System.out.println(item); }

public static void b(long item) { c(item); }

public static void c(long item) { d(item); }

public static void d(long item) { System.out.println(item); item = 20L; // тут }

Ответ

Если вызвать a(x), программа напечатает x в методе d, а затем x в методе a. Присваивание item = 20L меняет только локальный параметр d: long передаётся по значению.

Каждый вызов получает собственную копию числа. В точке комментария у d значение item равно 20, но параметры a, b и c сохраняют исходное x. Например, a(7L) выводит две строки 7. Сам фрагмент объявляет методы и без вызова ничего не печатает. Чтобы новое значение дошло до a, его нужно вернуть по цепочке либо явно менять разделяемый объект, если это оправдано контрактом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее