JAVA基础知识复习(六)-内存结构简单说明

本文最后更新于:December 3, 2021 pm

JAVA基础知识复习(六)。简单说明记录在内存中数据的存储位置。

栈、堆、方法区

栈(stack):存放局部变量,即方法中的变量。包括main函数中的变量。

堆(heap):存放通过 New 出来的结构,如:对象、数组。

方法区:又叫静态区,跟堆一样,被所有的线程共享。类的加载信息、静态域、常量池。方法区包含所有的class和static变量。
方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

如图所示:

一维数组的内存解析

代码:

1
2
3
4
5
int[] arr = new int[]{1,2,3};
String[] arr1 = new String[4];
arr1[1] = "刘德华";
arr1[2] = "张学友";
arr1 = new String[3];

首先,我们先看第一句话。
int[] arr 是在栈中的,new int[]{1,2,3} 是在堆中的。并且初始化他们为默认值。它们之间是通过地址来连接的。

String[] att 同样也是在栈中,new String[4]是在堆中。并且初始化他们为默认值。他们之间也是通过地址连接的。att[1] = “刘德华”;att[2] = “张学友”;就是赋值。

arr1 = new String[3] 是又重新在堆中开辟了一个新空间。

具体表示如图所示,被红线划掉的表示的是开始时的默认值:

二维数组的内存解析

同一维数组一样的道理,如图,其中被红线划掉的表示的是开始的默认值:

1
2
3
4
int[][] arr1 = new int[4][];
arr1[1] = new int[]{1,2,3};
arr1[2] = new int[4];
arr1[2][1] = 30;


本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/2581791513.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!