今天举例说一下Java中的堆和栈。
1、基本类型
int a = 1;
对于以上变量a,是在栈中存放的。
2、 对象
A a = new A();
其中,引用a是在栈里存放的,对象A()是在堆里存放的。
3、数组
int[] a = new int[4];
a[0] = 1;
a[1] = 2;
a[3] = 3;
a[4] = 4;
数组的内存分配如下图所示,引用a是在栈中,数组对象在堆中。
4、函数一
void test() {
int[] a = new int[4];
a[0] = 1;
a[1] = 2;
a[3] = 3;
a[4] = 4;
change(a);
}
void change(int[] a) {
a[0] = 10;
}
内存情况如图:
5、函数二
void test() {
int[] a = new int[4];
a[0] = 1;
a[1] = 2;
a[3] = 3;
a[4] = 4;
change(a);
}
void change(int[] a) {
a = new int[4];
a[0] = 7;
a[1] = 8;
a[2] = 9;
a[3] = 10;
}
内存情况如下图: