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

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

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

class Test{

int a = 2;

}

先赋0,再赋2.

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


end

如有错误,欢迎指正。

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值