java关于局部变量必须初始化赋初值及成员变量不必须该操作的原理浅解析

时间:2022-07-01 19:36:39

一个我们编写的java源码类(机器码)要想被正式运行,必须先编译成字节码(class文件),然后虚拟机经过类加载过程后才能真正使用。

而这个类加载过程包括了对字节码  加载 验证 准备 解析 初始化等过程。在这个过程中,我们会对我们定义的成员变量进行两次初始化,一次赋默认初值(0值,boolean赋为false),一次赋我们定义的初值,如:

class Test{

int a = 2;

}

先赋0,再赋2.

而方法,需要进栈执行,这个过程是没有赋初值过程的。成员变量和局部变量赋不赋初值的原因就在这里,成员变量我们不主动初始化赋初值,有大佬照顾,给他赋零值,而局部变量,姥姥不疼,舅舅不爱,必须自力更生,我们必须主动初始化进行赋值,否则编译器不通过。


end

如有错误,欢迎指正。