Aur*_*uro 3 java variables methods
我正在经历hoistingJavaScript中的概念,在该概念中,所有函数和变量声明在执行任何操作之前都已吊起,这就是为什么函数在其实际声明部分之前可用的原因。
让我想知道它在Java中是如何工作的。
考虑以下代码:
package declarationOrder;
public class Main {
int num = init();
int init() {
return 5;
}
}
Run Code Online (Sandbox Code Playgroud)
init()在到达其声明部分之前,该方法到底可用于调用的方式如何?
考虑另一个示例:
package declarationOrder;
public class Main {
int num1 = num2; // compiler error
int num2 = 5;
}
Run Code Online (Sandbox Code Playgroud)
变量的声明顺序在这里如何起作用?
为什么以及如何区别对待该方法?
编译器遵循以下顺序在Java类中加载内容(属性,方法,静态块等):
在您的情况下,方法是第一个被加载的方法,然后是类属性。
关于将按初始化顺序加载的属性,在第二个示例中会出现错误,因为如果您按相反的顺序进行操作,num2前面已经提到过num1它会正常工作:
int num2 = 5;
int num1 = num2;
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参见12.4.2。详细的初始化程序