java语言支持两种方法定义数组
type[ ] Name;
type Name[ ];
例如 int a[ ]; int[ ] a;
建议使用第一种,第二种容易将Name[]当成一个变量;
定义数组不能指定长度
初始化
1.静态初始化
Name = new type[ ]{ a1,a2,a3.....} type是数组类型
如下:
// 定义一个int数组类型的变量,变量名为intArr.
int[] intArr;
// 使用静态初始化,初始化数组时只指定数组元素的初始值,不指定数组长度。
intArr = new int[ ]{5, 6, 8 , 20};
简洁点写也可以 int[ ] Name = {a1,a2,a3}
2.动态初始化
动态初始化只指定数组长度,系统指定初始值。
Name = new type[length];
如int [] price = new int[5];
不要同时使用静态初始化和动态初始化,就是不要同时在初始化同时指定数组长度,也为数组分配具体值。
数组越界:
数组索引是从0开始,就是数组第一个值。最后一个值为长度-1
如果访问数组指定的索引小于0,或者大于等于数组长度,运行会出现异常。
java.lang.ArrayIndexOutOfBoundsException:N (数组索引越界异常,N就是索引值)
二维数组
type[] [] Name
初始化:Name = new type[length] []
如:int[][] a;
a = new int[4][] a 是一个长度为4的int型数组,
// 初始化a数组的第一个元素,长度为2
a[0] = new int[2];
// 访问a数组的第一个元素所指数组的第二个元素
a[0][1] = 6;
// 同时初始化二维数组的2个维数
int[][] b = new int[3][4];
// 使用静态初始化的语法来初始化一个二维数组
String[][] str1 = new String[][]{new String[3], new String[4],new String[5]};
这样写相当于str1长度为3,其中第一个长度为3,第二个为4,第三个为5。
也可以直接定义某一个具体值
String[][] str1 = new String[][]{new String[3], new String[]{"hello"}};
相当于String[1][0] = "hello" (str1长度为2,第二个元素为长度为1的数组)