一维数组内存分析
Java虚拟机的内存划分

| 区域名称 | 作用 | 
|---|---|
| 方法区(Method Area) | 存储类信息、常量、静态变量、即时编译器编译后的代码等数据。 | 
| 堆(Heap) | 存储对象实例及数组,由于 Java 程序中大部分对象都在堆中分配内存,因此堆是 Java 程序中最常用的区域。 | 
| 栈(Stack) | 存储方法的局部变量、方法的参数、方法调用和返回地址等数据,每个线程都有自己的栈,栈中的数据只能在本线程中可见。 | 
| 本地方法栈(Native Method Stack) | 与栈类似,但是它是为本地方法服务的,即在 Java 中调用的本地方法。 | 
| 程序计数器(Program Counter) | 记录当前线程执行的字节码指令地址,用于支持线程切换、方法调用、异常处理等功能。 | 
与目前数组相关的内存结构:
- 虚拟机栈(Stack):用于存放方法中声明的变量。例如,对于声明 int[] arr = new int[]{1,2,3}; 这一语句,arr 变量存放在栈中。
- 堆(Heap):用于存放数组的实体,即数组中的所有元素。例如,对于声明 int[] arr = new int[]{1,2,3}; 这一语句,数组中的元素 1, 2, 3 存放在堆中。
内容主要结构

举例1:基本使用

举例2:两个变量指向一个一维数组

多维数组使用
多维数组概述
- 某公司2021年全年各个月份的销售额进行登记。按月份存储,可以使用一维数组。如下:
int[] monthData = new int[]{23,43,22,34,55,65,44,67,45,78,67,66};
- 如果改写为按季度为单位存储怎么办呢?
int[][] quarterData = new int[][]{{23,43,22},{34,55,65},{44,67,45},{78,67,66}};
二维数组的定义
二维数组的声明和初始化
声明
//推荐
元素的数据类型[][] 二维数组的名称;
初始化

二维数组元素调用

二维数组元素的长度

二维数组元素的遍历

二维数组的默认初始值

二维数组的内存解析
举例1:

举例2:

面试题合集
- JVM 内存分哪几个区,每个区的作用是什么?
  
- 方法区
- 虚拟机栈
- 本地方法栈
- 堆
- 程序计数器










