Java局部变量为什么要初始化

Java局部变量为什么要初始化 如题。谢谢。

阅读 7.3k
3 个回答

首先纠正一个观点,全局变量和局部变量都是需要初始化的。这是因为使用没有初始化的变量是不安全的。只不过全局变量的初始化工作可以交给JVM。而为什么局部变量不可以呢。我认为是出于性能等多方面的考虑。

成员变量的值存放于堆中,JVM在分配内存时将整块区域置为零即完成了初始化,方便快捷。而局部变量运行时被分配于栈中,量大,生命周期短,如果由JVM完成初始化,将是一笔很大的性能开销。所以java明文规定局部变量必须初始化。

建议学习一下jvm内存模型

  1. 编译器通不过

  2. 如果没有初始化,类似c的随便指了一个地址。所以java直接编译失败了。

相对于全局变量,局部变量的生命周期短,声明次数多,如果像全局变量一样给个初始值的话会影响性能,不给初始值又不安全,所以折中了一下,规定了用户需要先赋值再使用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题