Что вернет этот код

Вывод: 111 333 333. Локальная global получает строку 333, поле this.global остаётся 111, а parse возвращает целое 333.

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

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

Вывод: 111 333 333. Локальная global получает строку 333, поле this.global остаётся 111, а parse возвращает целое 333.

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

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

Условие

public class ATest {
    String global = "111";

    public int parse(String arg) {
        int value = 0;
        try {
            String global = arg; // Shadowing the instance variable
            value = Integer.parseInt(global); // Parsing the local variable
        } catch (Exception e) {
            System.out.println(e.getClass()); // Print exception class
        }
        System.out.print(this.global + " " + value + " "); // Accessing instance variable using 'this'
        return value;
    }

    public static void main(String[] args) {
        ATest ct = new ATest();
        System.out.print(ct.parse("333")); // Calling parse method
    }
}

Ответ

Вывод: 111 333 333. Локальная global получает строку 333, поле this.global остаётся 111, а parse возвращает целое 333.

Локальная переменная затеняет поле только внутри своего блока. Integer.parseInt успешно преобразует аргумент, поэтому catch не выполняется. Внутренний print печатает 111 333 с последним пробелом, внешний print допечатывает возвращённое 333. Перевода строки нет. Для изменения поля понадобилось бы присваивание this.global, которого в коде нет.

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

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

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

Подробнее