数组的定义及初始化

一、一维数组的定义及初始化方式

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));//比较array1array2是否相等
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,并返回其下标(二分查找:Ologn),顺序查找:On))
5> Arrays.fill(array1,100);//将array1中的元素全部置为100

三、二维数组的定义及初始化方式

数组的定义及初始化_第1张图片

 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);

这里写图片描述

数组的定义及初始化_第2张图片

你可能感兴趣的:(java)