首页 > 编程语言 > 详细

java 成员变量为什么可以不初始化而局部变量必须初始化

时间:2018-05-06 14:01:03      阅读:160      评论:0      收藏:0      [点我收藏+]

  对于java虚拟机内存这块始终有点迷,今天又把深入理解jvm虚拟机拿出来翻了翻,理了理java内存区域。

  ava虚拟机栈描述的是java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存放局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时,这个方法需要在栈帧分配多大的局部变量空间是完全确定的,在方法运行期间不会改变局部变量表的大小。这句话就说明了局部变量在创建时就必须进行初始化以确定分配内存大小。

  java堆存放所有对象的实例,几乎所有的对象实例都在这里分配内存。在hotspot虚拟机中,内存分配后,虚拟机需要将分配到的内存空间都初始化为零值。这一步操作保证了对象的实例字段在java代码中可以不赋初始值就直接使用,程序能访问到的这些字段的数据类型所对应的零值。

 

java 成员变量为什么可以不初始化而局部变量必须初始化

原文:https://www.cnblogs.com/Lets-goo/p/8998014.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!