什么是数组?
数组只是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本数据类型数据序列。
数组的定义
定义一个整型数组
(1)int[] a={1,2,3};//定义数组a里面含有1,2,3三个元素。
(2)int[] a=new int[3]//定义一个可以存放3个元素的内存空间
(2)int[] a=new int[]{1,2,3}
注:数组元素的下标从0开始,最大下标值为数组的大小减一。可通过数组名.length(a.length)来获取数组长度,如果下标超出范围,则会出现“数组访问越界异常”。
数组的遍历
(1)for语句
例:
int[] a={1,2,3};
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
//输出结果为
1
2
3
(2)foreach语句
例:
int[] a=new int[]{1,2,3};
for(int s:a){
System.out.println(a);
}
(3)Arrays.toString()
例:
int[] a=new int[]{1,2,3};
System.out.println(Arrays.toString(a));
一维数组内存分布
说明:当你定义一个整型数组a时,在java栈中就会为a开辟一块内存0x123;数组中所存放的元素被放在在java推中0x123所开辟的内存中。
数组的拷贝
(1)for语句
例:
int[] a={1,2,3};
int[] b=new int[3];
for(int i=0;i<a.length;i++)
b[i]=a[i];
(2)Arrays.copyOf();
例:
int[] a={1,2,3};
int[] b=Arrays.copyOf(a,newlength:3);//方法中第一个参数为复制的数组,第二个为新数组的长度
(3)System.arraycopy()
System.arraycopy( , , , , )中含5个参数,在这里说明时用1-5号来代替。
1为复制的数组,2为复制数组起始复制下标,3为复制后新的数组,4为新数组起始复制下标,5为复制后数组长度。
例:
int[] a={1,2,3};
int[] b=new int[4]{2,3,4,5};
System.arraycopy(a,0,b,3,7);//将数组a从0号下标开始复制到b的4号小标之后,复制后数组长度变为7,数组为{2,3,4,5,1,2,3}
(4)clone();
例:
int[] a={1,2,3};
int[] b=a.clone();//将a数组复制给b数组
二维数组
定义方法
(1)int[][] a=new int[3][2];
(2)int[][] a=new int[3][];
int[3][0]={1,2,3};
int[3][1]={4,5,6};
二维数组相当于定义了一个矩阵,比如上述的定义,就相当于定义了一个3行2列的矩阵,a[0][0]所访问的就是1行1列的元素。