1.数组动态初始化
数组动态初始化 就是 只给定数组的长度,由系统给出默认初始化值
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
数组声明,必须要明确行数,列数随意
正确:
float f[][] = new float[6][6];
float []f[] = new float[6][6];
float [][]f = new float[6][6];
float [][]f = new float[6][];
错误:
float f[][] = new float[][6];
2.数组静态初始化
在创建数组时,直接指定每个数组元素的初始值,由系统 决定 数组长度。
不指名数组长度
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
数据类型[] 数组名 = {元素1,元素2,...};
3.数组操作的两个常见问题
3.1索引越界异常
int[] arr = new int[3];
System.out.println(arr[3]);
数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。
程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。
解决方案:将错误的索引修改为正确的索引范围即可!
3.2 空指针异常
int[] arr = new int[3];
//把null赋值给数组
arr = null;
System.out.println(arr[0]);
arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。
解决方案:给数组一个真正的堆内存空间引用即可!