内存区域,属性(成员变量),局部变量,对象数组的内存解析

内存区域,属性(成员变量),局部变量,对象数组的内存解析

1.内存区域
①虚拟机栈:即为平时提到的栈结构,我们将局部变量存储在栈结构中。
②堆:我们将new出来的结构比如(数组,对象)加载在堆空间中,对象的属性(非static的)加载在堆空间中。
③方法区:类的加载信息,常量池,静态域。
2.属性(成员变量)VS 局部变量
相同点:
①:定义变量的格式:数据类型 变量名=变量值;
②:先声明,后使用;
③:变量都有其对应的作用域
不同点:
①在类中的声位置不同:
属性:直接定义在类的{}内。
局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量。
②关于权限修饰符的不同:
属性:可以在声明属性时,指明其权限,使用权限修饰符。
局部变量,不可以使用权限修饰符。
③默认初始化值:
属性:类的属性,根据其类型,都默认初始化值。
整型:0
浮点型:0.0
字符型:0或‘\u0000’
布尔型:false
局部变量:没默认初始化值
意味着,我们在调用局部变量之前,一定要显式的赋值,特别地,形参在调用时,我们赋值即可。
④在内存中的加载位置:
属性:加载到堆空间中(非static)
局部变量:加载到栈空间
3.对象数组的内存解析
内存区域,属性(成员变量),局部变量,对象数组的内存解析