1、成员变量(全局变量)是可以不经初始化的,在类加载过程的准备阶段即可给它赋予默认值,但局部变量使用前需要显示赋予初始值,javac不是推断不出不可以这样做,而是没有这么做,对于成员变量而言,其赋值和取值访问的先后顺序具有不确定性,对于成员变量可以在一个方法调用前赋值,也可以在方法调用后进行,这是运行时发生的,编译器确定不了,交给jvm去做比较合适。
2、而对于局部变量而言,其赋值和取值访问顺序是确定的。这样设计是一种约束,尽最大程度减少使用者犯错的可能。假使局部变量可以使用默认值,可能总会无意间忘记赋值,进而导致不可预期的情况出现。
转载于:https://www.cnblogs.com/liuqing576598117/p/11165428.html
本文深入探讨了Java中成员变量与局部变量的初始化机制。成员变量可在类加载时获得默认值,而局部变量则必须显式初始化,此设计旨在最大限度减少编程错误。文章通过对比两种变量的赋值和取值顺序,揭示了设计背后的考量。
1179

被折叠的 条评论
为什么被折叠?



