В Java: что произойдет, если поменять местами объявление переменной и её использование в коде?

«В Java: что произойдет, если поменять местами объявление переменной и её использование в коде?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Код не скомпилируется. Компилятор Java требует, чтобы переменные были объявлены до их использования (правило «объявление перед использованием»). Это относится как к локальным переменным, так и к полям класса, если они используются в инициализаторах.

Пример ошибки компиляции:

public class Example {
    public void myMethod() {
        System.out.println(value); // ОШИБКА: cannot find symbol
        int value = 10; // Объявление после использования
    }
}

Что можно менять местами без ошибок:

  • Порядок независимых методов в классе.
  • Порядок независимых полей класса.
  • Порядок операторов внутри метода, если они не нарушают зависимости по данным.

Важные исключения и правила:

  1. Статические блоки инициализации выполняются в порядке их записи в исходном коде.
  2. Поля класса инициализируются в порядке их объявления перед вызовом конструктора.
  3. Для циклов for переменная-счетчик объявляется в самом цикле: for (int i = 0; ...).

Вывод: Порядок имеет критическое значение для разрешения зависимостей (объявление перед использованием), но не важен для независимых элементов кода.