数组
数组的定义和使用
-
数组是多个相同类型数据的组合
-
一维数组的声明方式:
int[] a;//整型数组
double []b;//双精度数组
Mydata []c;//对象数组 -
注意方括号可以写在变量名的前面,也可以写到后面
-
int []a,b,c;//表示数组a,数组b,数组c
-
int a[],b,c;//表示数组a,变量b,变量c
-
数组初始化
数组定义与为数组分配空间分开进行
int []a=new int[2];//分配空间(整型数组)
a[0]=3;//使用
a[1]=9;//使用
MyDate []dates=new MyDate[2];//分配空间(对象数组)
dates[0]=new MyDate(22,7,1964);//使用
dates[1]=new MyDate(1,1,2000);//使用
-
Java语言中声明数组时不能指定其长度(数组中元素个数),如
int a[5];//非法 -
数组是引用类型
int []a=new int[5];
这里的a只是一个引用,引用到一个空间里面去(有五个元素的空间(栈或者堆),并不是存在a这个地方 -
静态初始化
- 在定义数组的同时就为数组元素分配空间并赋值
int[] a={2,9,8};
或者写为 int[] a=new int[]{3,8,9};
MyDate[] dates={new MyDate(22,7,1964),
new MyDate(1,1,2000)};//最后可以多加一个逗号。如{3,9,8,}
- 在定义数组的同时就为数组元素分配空间并赋值
-
数组是引用类型,数组一经分配空间,其中的每个元素也被按照成员变量相同的方式隐式初始化。如:
- [ ] 数值类型是0(因为没有赋值),引用类型是null(因为它没有引用到对象)
int []a=new int[5];//a[0]…a[4]则是0
MyDate []dates=new MyDate[2];//dates[0]、dates[1]则为null -
数组元素的引用方法
- index为数组元素下标,可以是整型常量或者整型表达式。如a[3],b[i],c[6*i];
- 数组元素下标从0开始;长度为n的数组合法下标取值范围:0~n-1
-
每一个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度(元素个数);
int ages=new int[10];
for(int i=0;i<ages.length;i++)
{
System.out.println(ages[i]);
}
- 增强的for语句可以方便地处理数组、集合中各元素,如
int[] ages=new int[10];
for(int i:ages);
{
System.out.println(i);
}
这种语句是只读式语句的遍历(对每一个元素只能访问不能赋值)
- 复制数组
System.arraycopy提供了数组元素复制功能:
int[] source={1,2,3,4,5,6};//源数组
int[]dest={10,9,8,7,6,5,4,3,2,1};//目的数组
System.arraycopy(source,0,dest,0,source.lenght);//复制源数组中从下标0开始的source.length个元素到目的数组,从下标0的位置开始存储
多维数组
二维数组举例:
int [][]a={{1,2},{3,4,0,9},{5,6,7}};
二维数组是数组的数组
int[][] t=new int[3][];
t[0]=new int[2];
t[1]=new int[4];
t=2]=new int[3];
- 多维数组的声明和初始化应该按从高到低的顺序进行
int t1[][]=new int[][4];//非法