六、数组动态和静态初始化两种对比
- 静态初始化
静态初始化:手动"指定数组元素",系统会根据元素个数,计算出数组的长度
使用场景:需求中已经明确了要操作的具体数据,直接静态初始化即可
例:将一班的学生的成绩存入数组中:11 , 22,33
int [] arr={11,22,33};
- 动态初始化
动态初始化:手动"指定数组长度",由系统给出默认初始化值
使用场景:只明确元素个数,不明确具体数值,推荐使用动态初始化
例:使用数组容器来存储键盘录入的5个整数
int [] arr=new int[5];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;
七、空指针异常
空指针异常:当引用数据类型变量被赋值为null之后,地址的指向被切断,还继续访问堆内存数据,就会引发空指针异常
如: int[] arr1 = null;
System.out.println(arr1[0]);
八、数组索引越界异常
当访问到了不存在的索引时,就会出现索引越界异常
九、数组内存图
- 数组内存分配
方法区:
1.类的字节码文件加载时进入方法区
2.jvm自动调用main方法(方法),进入栈内存执行
//是jvm调用方法,不是栈调用的
栈内存: 方法运行进入的内存
堆内存: new出来的内容都会进入堆内存,开辟空间,产生地址值