概念:数组就是存储数据长度固定、数据类型一致的容器。
JVM内存划分:
寄存器:给CPU使用,和我们开发无关;
本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关;
方法区:存在可以运行的class文件,以及存储类的方法;
堆内存:存储对象或者数组,new出来的对象都存储在堆内存;
方法栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
一个程序执行的流程:
public static void main(String[] args) {
int[] arr = new int[3];
System.out.println(arr);
}
- main方法进入方法栈中执行
- 在堆内存中开辟一块内存空间,用来存放数组对象,形成16进制的内存地址值
- 初始化数组元素,默认为0
- 将内存地址赋予给arr这个变量保存
值的传递和内存地址的传递
方法的参数为基本数据类型时,传递的是数据值,是值的拷贝;方法的参数为引用类型时,传递的是地址值。也就是说传递基本数据类型时,原本变量的值不会改变;传递引用类型时,由于传入的是内存地址,所以会改变之前的值,因为已经彻底地改变了内存地址中实例对象的内容。