Java数组内存分配
内存是计算机中的重要原件,临时存储区域,作用是运行程序。
我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。必须放进内存中才能运行,运行完毕后会清空内存。
Java虚拟机要运行程序,就必须要对内存进行空间的分配和管理。
将内存分为:
-
方法区:存储可以运行的class文件。(编译后的文件)
-
方法栈:方法运行时需要使用的内存,比如main方法会进入方法栈中,开辟空间开始运行。
-
堆内存:存储对象或者数组的数值,new来创建的,都存储在堆内存。
public class ArrayRun {
public static void main(String[] args) {
int[] arr = new int[3];
System.out.println(arr);
System.out.println(arr[0]);
arr[0] = 11;
System.out.println(arr[0]);
}
}
以上代码运行过程:
- 代码编译形成字节码文件ArrayRun.class,加载入内存的方法区。
- 字节码文件开始运行,由jvm自动调用main方法进栈,在方法栈中开辟存储空间开始运行main中代码。
- 首先是arr变量的声明,因为变量是在方法中声明的,所以变量存储在主方法中,也归属于栈。
- 开始执行new,(new出来的内容都会进入堆内存,堆内存的数据都会有地址值)在堆中开辟空间将空间的地址赋值给arr,同时为数组默认初始化值。
- 打印arr的地址值。
- 通过arr的地址值和索引就可以依次修改、打印数组当中的值了。
数组动态初始化的默认值:
- 整型数组默认值为:0
- 浮点型数组默认值为:0.0
- 布尔型数组默认值为:false
- 字符型数组默认值为:空字符
- 引用数据类型(String)数组默认值为:null
引用数据类型:记录地址值得变量,所对应的数据类型(String、数组等)
如有错误欢迎留言评论,及时更正。 羽露风 5月11日
本文深入讲解Java中数组的内存分配机制,包括不同内存区域的作用、数组动态初始化的默认值及如何通过new操作符在堆内存中创建数组。
1654

被折叠的 条评论
为什么被折叠?



