数组的定义
数组是共用名称引用相同类型变量的集合。
数组的优势主要在于用一种可以轻松操作数据的方法把数据组织了起来。
Java中的数组和其他程序设计语言中的数组类似,但其有一个特殊的属性:Java是把它们作为对象来实现。这就相对其他程序设计语言中的数组优势很大。在Java中的数组引用赋值这篇博客的最后的改进版中就能很好体现。当然还有其他优势,例如,Java可以把无用的数组通过垃圾回收器回收。
一维数组
一维数组是相关变量的列表,一维数组在Java中使用的最多。
我们可以使用以下几种基本形式声明一维数组:
int[] a = new int[5];
int b[] = new int[5]; //这种方式虽然不会报错,但是不推荐,因为Java是强类型语言,使用这种方式不符合它这一特性。
int[] c;
c = new int[5]; //先声明一维数组c,再为它动态分配空间
数组中单个元素是通过索引(index)来访问,在Java中,所有的数组都以0作为第一个元素的索引。要索引数组,只需使用方括号包含指定元素的索引值即可,例如a[0]代表数组a的第一个元素。
有了一维数组,但是怎么存进数据进去呢?
这就需要使用一维数组的初始化。
以下是几种一维数组的初始化方法:
int[] a = new int[] {1, 2, 3};
//int[] a ={1, 2, 3}; //这是上一条语句的缩写
将数据存在一个数组里面,将会有一定的顺序问题,因此,针对数组将有很多的排序问题,冒泡排序,插入排序,快速排序等等。这里有最简单的Java中的冒泡排序。
多维数组
最简单的多维数组是二维数组。二维数组的实质是一个一维数组的一维数组,也就是数组的数组。
我们可以使用以下几种基本形式声明一维数组:
int[][] a = new int[5][]; //第一维必须给,一维数组的其他问题也在二维数组中存在,这里将不再重复。
二维数组的初始化:
int[][] c = new int[][] {{1, 2},{3, 4}};
//int[][] c = new int[2][];
//c[0] = new int[]{1, 2};
//c[1] = new int[]{3, 4}; //第一条语句的分开版
//c[1] = {1, 2} //特别注意,这种将会报错
其他多维数组将和二维数组类似用法。
不规则数组
因为多维数组作为数组的数组来实现,将会存在不同索引中,有着不一样的元素,即成为了不规则数组。
以下是不规则数组:
int[][] d = new int[2][];
d[0] = new int[]{1, 2};
d[1] = new int[]{3};
初始化等操作与多维数组类似。
length成员
因为数组是作为对象来实现,所以每个数组都含有包含数组元素数量的实例变量length。
以下是length的使用:
int a[] = {1, 2, 3};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
程序输出结果为
1
2
3
特别注意的是二维数组等多维数组:
int[][] f = new int[2][3];
System.out.println(f.length);
System.out.println(f[0].length);
程序输出结果为
2
3
通过上面几个程序可以知道,length是指数组可以存储的长度,而不是指数据元素的个数。