java-数组

来源:互联网 发布:mac 百度网盘 知乎 编辑:程序博客网 时间:2024/06/08 13:11

1.一维数组的三种书写方式

     int[ ] array1 = new int[3];

     int[ ] array2 = new int[ ]{1,2,3};

     int[ ] array3 = {1,2,3};

2. 二维数组的三种书写方式

int[][] array4 = new int[3][4];int[][] array5 = new int[][]{{1,2,3,4},{2,3,4},{4,5,6}};
int[][] array6 = new int[3][];//array6为交错数组array6[0] = new int[]{1,2,3,4};array6[1] = new int[]{2,3,4};array6[2] = new int[]{4,5,6};

3. 拷贝函数(拷贝数组和原数组地址不同,拷贝函数创建新的对象)

    (1)深度拷贝:可以将对象的值和对象的内容拷贝

    (2)浅度拷贝:浅拷贝是指对对象引用的拷贝

    (3)三种拷贝方式:1)克隆方法: int[ ] array2 = array1.clone();   //将array1数组拷贝到array2数组中            
                                  2)类库Arrays: int array3 = Arrays.copyof(array1,array1.length);   //Arrays.copyof的参数分别为array1数组、array1数组的长度

                            **   3)System.arraycopy: System.arraycopy(array1, 0, array3, 0, length);  //从array1的第0个元素往array3的第0个元素拷,拷length个长度

                                     //运行在本地操作系统上,效率高,大数据时用此方法

//拷贝一维数组int[] array7 = array3.clone();int[] array8 = Arrays.Copyof(array3,array3.length);int[] array9 = new int[array3.length];System.arraycopy(array3,0,array9,0,array3.length); //从前往后拷
//用一个一维数组clone一个二维数组int[][] array10 = new int[][]{};for(int i=0;i<array3.length;i++){    array10 = array3[i].clone();}

4. 打印数组元素
    (1)用for循环做打印,for(int i=0;i<array1.length;++i)
    (2)用foreach做打印,foreach:for(val:array1)  //一维数组
//foreach遍历二维数组for(int[] data : array5){     for(int val : data){     System.out.print(val + " "); } System.out.println();}
    (3)打印一维数组:System.out.println(Arrays.toString(array1));
        打印二维数组:System.out.println(Arrays.deepToString(array1));
//一维/二维数组元素打印Arrays.sort(array3); //排序System.out.println(Arrays.toString(array3)); //打印Arrays.binarySearch(array3,value); //返回array3排序后value所在的下标Arrays.fill(array3,-1); //全部初始化为-1System.out.println(Arrays.deepToString(array5));

5. java里的类库
    Arrays:数组的算法类库
      int[] array1 = new int[5];  //自动用0填充      Arrays.fill(array1,100);  //快速填充,填充到100      for(int i=0;i<array1.length;++i){   System.out.println(array1[i] + " ");      }      int[] array2 = new int[]{1,2,3,4,5};      int[] array3 = {1,2,3,4,5};
      int[] array4 = {1,2,3,4,5};        System.out.println(array3 == array4);   //比较地址      System.out.println(Arrays.equals(array3,array4));  //比较数组的值      System.out.println(Arrays.toString(array3));   //打印数组元素
      Arrays.sort(array2);  //排序,默认由小到大      System.out.println(Arrays.toString(array2));      int index = Arrays.binarySeach(array2,12);  //查找      System.out.println("12 index is" + index);        Arrays.sort(array3); //排序      System.out.println(Arrays.toString(array3)); //打印      Arrays.binarySearch(array3,value); //返回排序后value所在的下标      Arrays.fill(array3,-1); //全部初始化为-1

6. 可变参函数:将参数处理为数组

public static int sum(int... args){        return 0;    }
public static int sum(int... args){        int sum = 0;for(int i=0;i<args.length;i++){sum += args[i];}return sum;    }public static void main(String[] args){        System.out.println(sum(1,2));System.out.println(sum(1,2,3));    }