java初步学习 栈,堆内存问题(基于黑马的课进行自学,初学者,不喜勿喷)10
初步学习
内存问题
内存分配
java中有很多内存分配区,不过这里先学习栈内存与堆内存

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

数组的内存分配
数组的地址值会记录在栈内存和堆内存中,但数组本身只会被记录在堆内存中
例:
逻辑:先创建容纳两个变量的数组“arr01”并记录其地址值,再输出其地址值,并根据其栈内存地址值找到堆内存中的“arr01”,输出其第0位和第1位,再将“10”赋值给“arr01”的第0位,将“20”赋值给“arr01”的第1位
创建元素为“30,40,50”的数组“arr02”并记录其地址值,再输出其地址值,并根据其栈内存中的地址值找到堆内存中的数组,并输出其第0位与第1位

两数组共用一个地址值
若两数组共用一个地址值,则该两数组也共用一个数组
例:
逻辑:先创建元素为“10,20”的数组“arr01”,再创建与“arr01”共用一个地址值的数组“arr02”,根据记录在栈内存中的“arr01”的地址值找到堆内存中的“arr01”,并输出其0号位和1号位
将30赋值给“arr02”的0号位,根据记录在栈内存中的“arr02”的地址值找到堆内存中的“arr02”,输出其0号位(30)和1号位

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


浙公网安备 33010602011771号