局部变量为什么需要显式赋值,否则编译不了

Posted liuqing576598117

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了局部变量为什么需要显式赋值,否则编译不了相关的知识,希望对你有一定的参考价值。

1、成员变量(全局变量)是可以不经初始化的,在类加载过程的准备阶段即可给它赋予默认值,但局部变量使用前需要显示赋予初始值,javac不是推断不出不可以这样做,而是没有这么做,对于成员变量而言,其赋值和取值访问的先后顺序具有不确定性,对于成员变量可以在一个方法调用前赋值,也可以在方法调用后进行,这是运行时发生的,编译器确定不了,交给jvm去做比较合适。
2、而对于局部变量而言,其赋值和取值访问顺序是确定的。这样设计是一种约束,尽最大程度减少使用者犯错的可能。假使局部变量可以使用默认值,可能总会无意间忘记赋值,进而导致不可预期的情况出现。

以上是关于局部变量为什么需要显式赋值,否则编译不了的主要内容,如果未能解决你的问题,请参考以下文章

面试八股文

Java 中的变量

局部变量,实例变量,静态变量

成员变量 局部变量

JavaScript 声明全局变量和局部变量

内存管理