Я проходил через концепцию hoisting
в JavaScript, где все объявления функций и переменных поднимаются до выполнения какого-либо выполнения, и именно поэтому функция доступна до ее фактической части объявления.
Мне интересно, как именно это работает в Java.
Рассмотрим следующий код:
package declarationOrder;
public class Main {
int num = init();
int init() {
return 5;
}
}
Как именно метод init()
доступен для вызова до того, как будет достигнута часть объявления?
Рассмотрим другой пример:
package declarationOrder;
public class Main {
int num1 = num2; // compiler error
int num2 = 5;
}
Как получается, что порядок объявления переменных играет здесь роль?
Почему и как метод трактуется по-другому?