内存分析 - 初始

内存分析 - 初始


内存 内存

栈、堆

// 1.声明数组
// 在栈中创建一个 array 的名字,这个时候 array 是空的,没有实际意义
// 这个时候的 array 就相当与一个书的某一个目录,但是这个目录还没有来得急标注具体的页码,所以这个目录暂时是无意义的
int[] array;
array null

// 2.创建数组
// new int[10] 在堆中开辟一块 int 空间,该空间被分成 10 个小块
// 每个小块会自动初始化一个值,因为空间类型是 int,那么每一个小块的类型也只能是 int,int 的默认值是 0 ,所以每个小块的默认值为 0,这个过程是隐式的
// 假设这块空间的地址是 88
// 相当于使用了这本书的第 88 页,这一页又细分为 10 块,每一块的内容默认写了 0 ,然后按照顺序排列的,序号从 0 开始
// 因为这个区块标明了只能写 int 类型的内容,所以每一个小块也都只能写入 int 类型的内容,这个内容是铅笔写的,可以根据要求擦除

// = 将栈中的 array 指向刚刚创建的堆空间,这个时候 array 就和创建的空间有联系了,array 中保存了堆空间的地址,通过 array 就可以直接访问到堆里面的具体空间了
// 就相当于给前面写的目录写了一个页码,根据这个页码就可以找到对应的页面,然后根据页面的默认序号,就可以找到具体的值了
array = new int[10];
88 索引 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0
array 88

// 3.给数组元素赋值
// array[0] 指向的是刚才创建的堆空间的第 0 个小块,
// 通过页码找到对应的页面,然后根据序号找到第 0 个小块

// = 将数字 1 保存到刚才创建的堆空间的第 0 个小块
// 将对应小块的内容擦除,然后写入 1 

array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
array[5] = 6;
array[6] = 7;
array[7] = 8;
array[8] = 9;
array[9] = 10;
88 索引 0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
posted @ 2023-02-03 00:00  懒♂癌  阅读(9)  评论(0编辑  收藏  举报