一、一维数组的定义及初始化方式
1> int[] array1=new int[5]; //初始化为该类型的默认值
2> int[] array2=new int[]{1,2,3,4,5};
3> int[] array3={6,7,8,9,10};
二、相关操作
1> System.out.println(Arrays.equals(array2,array3));//比较array1和array2是否相等
2> System.out.println(Arrays.toString(array3));//打印数组内容
System.out.println(array3);//打印array3的地址
3> Arrays.sort(array2);//对数组进行排序,默认从小到大
4> int index=Arrays.binarySearch(array2,4);//二分查找array2中的元素4,并返回其下标(二分查找:O(logn),顺序查找:O(n))
5> Arrays.fill(array1,100);//将array1中的元素全部置为100
三、二维数组的定义及初始化方式
1> int[][] array1=new int[3][4];
2> int[][] array2=new int[][]{{1,2,3},{4,5,6,},{7,8,9}};
3> int[] array3=new int[3][];
array3[0]=new int[]{11,12,13};
array3[1]=new int[]{14,15,16};
(若一维数组中的元素个数不等,则称为交错数组)
或
int[][] array3=new int[][]{new int[]{11,12,13},new int[]{11,12,13},new int[]{11,12,13}};
四、相关操作
二维数组的打印方式
1> System.out.println(Arrays.deepToString(array3));
2> for(int i=0; i < array3.length;++i){
for(int j=0;j < array3[i].length;++j){
System.out.print(array3[i][j]+" ");
}
}
3> for(int[] data1:array){
for(int data2:data1){
System.out.print(data2+" ");
}
}
五、数组拷贝
1> clone方法
int[] array2=array1.clone();
结论:产生一个新的数组的对象
2> Arrays.copyOf
int[] array2=Arrays.copyOf(array1,array1.length);
结论: 产生一个新的数组的对象
int[] array2=Arrays.copyOf(array1,array1.length+2);//扩容(补类型的默认值)
int[] array2=Arrays.copyOf(array1,array1.length-2);//缩容(少拷贝最后两个值)
3 > System.arrayCopy:native方法,直接运行在本地操作系统上,效率高
System.arraycopy(array1,0,array3,0,array1.length);
六、数组的深拷贝与浅拷贝
一维数组
int[] array1={1,2,3,4,5};
int[] brray1=array1; //浅拷贝
brray1[0]=10; //改变了数组brray1的值,其实是改变了数组array1元素的值
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(brray1));
System.out.println(array1+" "+brray1); //地址相同
System.out.printf("%d %d",array1[0],brray1[0]);
int[] array1={1,2,3,4,5};
int[] brray2=array1.clone(); //深拷贝
brray2[0]=10;
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(brray2));
System.out.println(array1+" "+brray2); //地址不同
System.out.printf("%d %d",array1[0],brray2[0]);
二维数组
int[][] array2=new int[][]{{1,2,3,4},{5,6}};
int[][] brray2=array2.clone(); //浅拷贝
brray2[0][0]=10;
System.out.println(brray2[0][0]+" "+array2[0][0]);
System.out.println(array2+" "+brray2);
int[][] array2=new int[][]{{1,2,3,4},{5,6}};
int[][] brray2=new int[array2.length][];
for(int i=0;i < array2.length;i++){ //深拷贝
brray2[i]=array2[i].clone();//用clone对二维数组进行复制,要在每一维上调用clone函数
}
brray2[0][0]=10;
System.out.println(brray2[0][0]+" "+array2[0][0]);
System.out.println(array2+" "+brray2);