栈空间
栈空间:函数的局部变量(常规变量都是栈空间)
回收:根据变量的作用域(生命周期)
栈空间申请的变量没有默认值(需要手动赋值)
堆空间
堆空间:凡是用 new 申请的空间,都在堆空间
回收:由垃圾回收器进行自动回收的(无需程序员管理)
在堆空间申请的变量,若是数字类型的,默认值为0;若是引用变量(指针变量),值为null
数组名在栈空间
`int a[]=null;`
数组名a是一个引用,未分配空间
数组在堆空间
`a=new int[10];`
数组在java中被看作对象,获取长度用a.length,new一个空间——a在栈空间,数组在堆空间
数组特性
int a[];
a=new int[10];
a[0]=90;
int b[]=a; b[0]8=10; //a[0]也会被修改,a、b指向同一空间
结果:a在堆空间中,a[0]-a[9]在栈空间中,示意图如下(图中 圈内 表示堆空间,圈外 表示栈空间)