java初步学习 栈,堆内存问题(基于黑马的课进行自学,初学者,不喜勿喷)10

初步学习

内存问题

内存分配

java中有很多内存分配区,不过这里先学习栈内存堆内存
image

简单的内存分配
逻辑:先将“10”赋值给“a”,然后将“20”赋值给“b”,再将“a”和“b”的值赋值给“c”,最后运行输出语句时先找到变量“c”,再将其输出到控制台
image

数组的内存分配
数组的地址值会记录在栈内存和堆内存中,但数组本身只会被记录在堆内存中

例:
逻辑:先创建容纳两个变量的数组“arr01”并记录其地址值,再输出其地址值,并根据其栈内存地址值找到堆内存中的“arr01”,输出其第0位和第1位,再将“10”赋值给“arr01”的第0位,将“20”赋值给“arr01”的第1位

创建元素为“30,40,50”的数组“arr02”并记录其地址值,再输出其地址值,并根据其栈内存中的地址值找到堆内存中的数组,并输出其第0位与第1位
image

两数组共用一个地址值
若两数组共用一个地址值,则该两数组也共用一个数组

例:
逻辑:先创建元素为“10,20”的数组“arr01”,再创建与“arr01”共用一个地址值的数组“arr02”,根据记录在栈内存中的“arr01”的地址值找到堆内存中的“arr01”,并输出其0号位和1号位
将30赋值给“arr02”的0号位,根据记录在栈内存中的“arr02”的地址值找到堆内存中的“arr02”,输出其0号位(30)和1号位
image
二维数组的内存问题
new出来二维数组也会在堆内存中占用一部分

例:
逻辑:先创建能包含两个数组,且每个一维数组能包含三个元素的二维数组“arr”,并记录其地址值,后再创建“arr1”和“arr2”这两个一维数组,并记录其地址值,后将其分别包含进二维数组“arr”的0索引和1索引
二维数组“arr”会将其地址值储存在相应的索引内,引用时再根据地址值找到数组
image

posted @ 2022-10-18 15:16  COUNTRY  阅读(43)  评论(0)    收藏  举报