深入剖析成员变量和局部变量的初始化问题

1.成员变量
成员变量可以不用显式的初始化,因为虚拟机会给它赋默认值
因为成员变量属于实例对象的一部分,而且所有的实例对象都是分配在堆内存中,在虚拟机中分配好存储空间的时候,此时就会把实例对象的内存空间的成员变量都进行默认初始化,所以说成员变量就算你没有进行显式初始化也是有值的(基本数据类型默认值为0,引用数据类型默认值为Null)。

2.局部变量
局部变量必须初始化,不初始化则无法使用
首先局部变量是位于方法中,而每一个方法在JVM执行过程中都是放在运行时数据区的栈中,而每一个栈中都存放着局部变量表、操作数栈、方法出口、动态链接等。因为局部变量表所需的内存空间是在编译期间就完成固定分配的,所以当调用方法前(也就是方法入栈之前),就必须确定这个方法栈需要分配多大的变量空间,在方法运行期间就不会改变局部变量表的大小了,所以就说明了局部变量在创建时就必须进行初始化以确定分配内存的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值