一维数组
一维数组的定义
数据类型[] 数组名; // 声明一维数组
数组名 = new 数据类型[个数]; // 分配存储空间
上述两步骤可合并成:
数据类型[] 数组名 = new 数据类型[个数];
以int[] x = new int[5]
为例,x
的数据类型是一个对int型数组对象的引用。
如果想让x不指向任何数组对象,则可以使用x = null
语句。执行该语句之后,原来得数组对象不再被任何引用变量所引用,也就变成了【垃圾】,直到垃圾回收器将他释放。
一维数组初始化
数组在用new
分配内存空间时,数组每个元素都会被自动赋初值:
- 整数赋值为 0
- 浮点数赋值为 0.0
- 字符赋值为
'\0'
- 布尔型赋值为
false
- 引用型赋值为
null
我们在定义数组的时候可以同时进行初始化操作:int[] x = {1, 2, 3, 4, 5}
。
此时数组x就是一个容量为5个int数据型存储空间,其中每一个元素的值依次为1, 2, 3, 4, 5
。
一维数组得访问
-
使用下标访问
-
for-each语句访问一维数组
int[] arr = {1, 2, 3}; for (int elem : arr) System.out.println(elem);
二维数组
二维数组的定义
数据类型[][] 数组名;
数组名 = new 数据类型[行数m][列数n];
上述方法定义了一个m行n列的矩形数组。它也可以进行合并写成:
数据类型[][] 数组名 = new 数据类型[行数m][列数n];
与C语言不同,Java可以定义非矩形二维数组。如下图:
int[][] x = new int[3][];
x[0] = new int[3];
x[1] = new int[2];
上述代码中x有三个元素,每个元素都是int[]
类型得一维数组。相当于定义了三个一维数组引用变量,分别是int[] x[0]
、int[] x[1]
、int[] x[2]
。然后再对元素x[0]
和x[1]
赋值,由于x[2]
没有被手动赋值,且又是一个引用变量,所以会被自动赋值x[2]=null
。
可以使用".length"属性获得数组得元素个数:
x.length; // x的行数-3
x[0].length; // x第一行的元素个数
x[1].length; // x第二行的元素个数
x[2]为null,不能使用lenght属性。
二维数组的初始化
int[][] arr = {{1,2,3},
{1,2},
{1,2,3,4,5,6}};
上述数组为不规则数组,矩形数组也可以使用上述方式进行初始化操作。
二维数组定义常见错误的形式
二维数组要求必须指出高层维数。
常见形式:
int[][] arr = new int[10][]
只指定高层维数。int[][] arr = new int[10][2]
指定高底层维数。int[][] arr = new int[][10]
错误。int[][] arr = new int[][]
错误。