1.一维数组的定义方式
// 方式一(静态初始化)
double[] prices;
prices = new double[]{20, 32, 43};
// 方式二:(动态初始化)
String[] foods;
foods = new String[4]; // 内部声明数组的长度
// String foods = new String[4];
// 其他方式
int[] prices = {1, 2, 3, 4}
Tips:
数组一旦初始化完成,长度就确定了,并且长度不可变
创建数组会在内存中分配一片连续的空间
基本数据类型数组未赋值的默认初始化值是0(\u0000)
引用数据类型数组未复制的默认初始值未null (boolean默认 false)
2.一维数组内存结构分析
2.1 JAVA中的内存结构是如何划分的?(主要关心JVM运行时的内存环境)
内存区域划分为5个部分:程序计数器,虚拟机栈,本地方法栈,堆,方法区
与数组有关的内存结构 比如: int[] arr = new int[]{1, 2, 3}
虚拟机栈:用于存放方法中声明的变量。比如:arr
堆:用于存放数组中的实体(即数组中的所有元素)。比如1,2,3
2.2具体以为数组中代码的内存解析一
2.2具体以为数组中代码的内存解析二
3.二维数组内层可以长度为空
如下
int[][] arr = new int[3][]
打印arr[0]出现的是arr[0]的地址,外层元素默认存储地址
如果是int[][] arr = new int[3][]第二个元素没有赋值,外层元素默认为null,内层元素不存在、
4.二维数组的内存解析一
代码中看见new了就代表新开辟的空间,没有则不是