1.成员变量
成员变量可以不用显式的初始化,因为虚拟机会给它赋默认值。
因为成员变量属于实例对象的一部分,而且所有的实例对象都是分配在堆内存中,在虚拟机中分配好存储空间的时候,此时就会把实例对象的内存空间的成员变量都进行默认初始化,所以说成员变量就算你没有进行显式初始化也是有值的(基本数据类型默认值为0,引用数据类型默认值为Null)。
2.局部变量
局部变量必须初始化,不初始化则无法使用。
首先局部变量是位于方法中,而每一个方法在JVM执行过程中都是放在运行时数据区的栈中,而每一个栈中都存放着局部变量表、操作数栈、方法出口、动态链接等。因为局部变量表所需的内存空间是在编译期间就完成固定分配的,所以当调用方法前(也就是方法入栈之前),就必须确定这个方法栈需要分配多大的变量空间,在方法运行期间就不会改变局部变量表的大小了,所以就说明了局部变量在创建时就必须进行初始化以确定分配内存的大小。
版权声明:本文为m0_51358164原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。