java关于局部变量必须初始化赋初值及成员变量不必须该操作的原理浅解析
2018-02-02 22:14
656 查看
一个我们编写的java源码类(机器码)要想被正式运行,必须先编译成字节码(class文件),然后虚拟机经过类加载过程后才能真正使用。
而这个类加载过程包括了对字节码 加载 验证 准备 解析 初始化等过程。在这个过程中,我们会对我们定义的成员变量进行两次初始化,一次赋默认初值(0值,boolean赋为false),一次赋我们定义的初值,如:
class Test{
int a = 2;
}
先赋0,再赋2.
而方法,需要进栈执行,这个过程是没有赋初值过程的。成员变量和局部变量赋不赋初值的原因就在这里,成员变量我们不主动初始化赋初值,有大佬照顾,给他赋零值,而局部变量,姥姥不疼,舅舅不爱,必须自力更生,我们必须主动初始化进行赋值,否则编译器不通过。
end
如有错误,欢迎指正。
而这个类加载过程包括了对字节码 加载 验证 准备 解析 初始化等过程。在这个过程中,我们会对我们定义的成员变量进行两次初始化,一次赋默认初值(0值,boolean赋为false),一次赋我们定义的初值,如:
class Test{
int a = 2;
}
先赋0,再赋2.
而方法,需要进栈执行,这个过程是没有赋初值过程的。成员变量和局部变量赋不赋初值的原因就在这里,成员变量我们不主动初始化赋初值,有大佬照顾,给他赋零值,而局部变量,姥姥不疼,舅舅不爱,必须自力更生,我们必须主动初始化进行赋值,否则编译器不通过。
end
如有错误,欢迎指正。
相关文章推荐
- 关于java中成员变量有默认初始化而局部变量没有
- java成员变量和局部变量的初始化和内存中的运行机制
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- 关于JAVA语言中成员变量和局部变量的区别总结
- 虚拟机大牛RednaxelaFX关于java里面的静态变量、成员变量、局部变量的内存分配
- 一道关于java 类初始化 成员初始化的笔试题的解析
- Java成员变量和局部变量初始化问题
- java基础---静态变量,成员变量,局部变量及类的初始化顺序
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的差别
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别
- java中成员变量和局部变量的初始化
- java中局部变量必须要初始化的原理
- 关于成员变量和局部变量是否都会被默认初始化的问题
- 成员变量自动初始化,局部变量必须手动初始化
- 关于成员变量自动初始化和局部变量手动初始化
- 关于Java 的局部变量和全局变量
- Java 静态方法中如何操作成员变量。
- java 线程---成员变量与局部变量
- java 线程---成员变量与局部变量
- java 中的 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块 执行时机