声明数组类型变量
数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
int[] a;
double d[];
String[] args;
Person p的[];
/*注意:java语言中声明数组类型的变量时,不允许指定数组的长度(数组元素的个数)*/
int[3] a; //非法
创建并使用数组
int[] s; //局部变量s(数组对象句柄)在栈内存
s = new int[10]; //int[]对象在堆内存,每个元素初始值为0
MyDate[] m;
m = new MyDate[10]; //MyDate[]对象每个元素初始值为null
数组元素缺省初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组对象一经创建,每个元素也被隐式初始化。
数组初始化
- 动态初始化
// 基本类型
int a[];
a = new int[3];
a[0] = 3;
a[1] = 9;
a[2] = 8;
// 引用数据类型
MyDate dates[];
dates = new MyDate[3];
datas[0] = new MyDate(22,7,1964);
datas[1] = new MyDate(1,1,2000);
datas[2] = new MyDate(22,12,1964);
- 静态初始化
// 基本类型
int a[] = {3,9,8};
// 引用数据类型
MyDate dates[] = {
new MyDate(22,7,1964),
new MyDate(1,1,2000),
new MyDate(22,12,1964)
};
多维数组
// 二维数组 实际为a[3][4]
int a[][] = {{1,2},{3,4,0,9},{5,6,7}};
i、j坐标 | j=0 | j=1 | j=2 | j=3 |
---|---|---|---|---|
i=0 | 1 | 2 | ||
i=1 | 3 | 4 | 0 | 9 |
i=2 | 5 | 6 | 7 |
- 多维数组的声明和初始化应按高维到低维的顺序进行:
int[][] a = new int[3][4];
int[][] t = new int[3][];
int[][] b = new int[][4]; //非法
数组拷贝
java.lang.System
类的arraycopy()
方法提供了数组元素复制功能
// 源数组
int source[] = {1,2,3,4,5,6};
// 目标数组
int dest[] = {10,9,8,7,6,5,4,3,2,1};
// 复制源数组中从下标0开始的3个元素到目标数组,从下标0开始存储
System.arraycopy(source,0,dest,0,3);
数组排序
JDK的java.util
包中定义的Arrays类提供了多种数组排序的功能
// 创建样本数组
int a[] = {6,23,45,12,-83,94,41};
// 数组排序 (内部实现采用快速排序法)
Arrays.sort(a);
// 排序后数组元素输出
for(int i=0; i<a.length; i++){
System.out.print(a[i]+"\t");
}