码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-07-10 18:16:31      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:先后   java   为什么   javac   局部变量   没有   默认值   col   初始   

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

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

标签:先后   java   为什么   javac   局部变量   没有   默认值   col   初始   

原文地址:https://www.cnblogs.com/liuqing576598117/p/11165428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!