Он не используется «до», он определен.Назначение может быть в строке выше в источнике, но это не имеет значения - javac
читает весь исходный файл и затем начинает генерировать код.(Вот так он может определять такие вещи, как «закрытая переменная никогда не использовалась» и т. Д.) Другими словами, порядок операторов имеет значение для определения того, какие операторы в последовательности выполняются первыми, но соседние элементы класса не имеют «порядок«такого рода среди них.
Однако есть правила для статических / нестатических элементов, и они гарантируют, что значение будет доступно после загрузки класса и до создания экземпляра объекта.