一维数组内存分析
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 内存分哪几个区,每个区的作用是什么?
- 方法区
- 虚拟机栈
- 本地方法栈
- 堆
- 程序计数器