java数组操作

什么是数组:
程序 = 算法+数据结构
算法:解决问题的步骤,流程(顺序,分支,循环)
数据结构:将数据按照某种特定的结构来保存
        数怎么存
        设计良好的,合理的数据结构可以导致好的算法
   
   
数组:就是一种最数据结构

设计程序,首先要确定数据结构

什么是数组?
1.相同数据类型的元素组成的集合
2.数组本身就是一种数据类型,引用类型
3.数组的定义:
定义基本类型数组的要点:
   确切的数据类型
   整体的数组名字
   不可缺少的[]
   
   Int[] arr 与int arr[] 两种写法都可以
   声明数组是不规定数组长度,new关键字分配空间是需要制定分配的空间大小,在这里需要规定数据长度
   执行new语句才使得数组分配到了指定大小的空间


   int a;//声明整型变量a
   int[] b;//声明整型数组变量
   double[] c;// 声明浮点型数据变量c
   char[] c;//声明字符型数组白能量c
   boolean[] d;//声明布尔型数组变量d
   
   //声明整型数组a,包含5个元素
   //每个元素都市int 类型,默认值为0,
   int[] a = new int[5];
   
   //声明浮点型数组d,包含20个元素
   //每个元素都是double,默认值为0.0
   double[] b = new double[20];
   
   //声明布尔型数组b,包含26个元素,
   //每个元素都是boolean性,默认值为false;
   boolean[] c = new boolean[26];
4.数组的初始化
   int[] arr = new int[4]; //  {0,0,0,0}
   int[] arr = {1,4,6,8};
   int[] arr = new int[]{1,4,6,8};//后面跟大括号了,前面中括号内就不能加个数
   int[] arr ;
   arr = {1,4,6,8}  //编译错误,此方式只能声明同时初始化
   arr = new int[]{1,4,6,8};

5.数组的访问
   5.1 通过数据名.length 可以获取数组的长度,元素的个数
      int[] arr = new int[4];
      System.out.println(arr.length);  // 4
      
   5.2 通过下标/索引来访问数组中的元素,索引从零开始,最大到数组的长度减一
      int[] arr = new int[3];
      arr[0] = 100;
      arr[1] = 200;
      arr[2] = 300;
      //  arr[3] = 400;// 数组下标越界异常,长度是3,最大下标只能是2
      System.out.println(arr[arr.length-1]);
6.数组的遍历:
   int[] arr = new int[10];
   for(int i = 0;i<arr.length;i++){
      arr[i] = 100;
      // arr[i] = (int)Math.random*100;
   }
   
      
7.数组的复制**********************
    这个是重点!!!!!!!!
   7.1 第一种方式
   System.arraycopy(a,1,a1,1,4);
   a:源数组,想要从哪里复制
   1:源数组下标,从数组的哪个位置开始赋值
   a1:目标数组,复制到哪里去
   0:目标数组的起始下标,复制到哪个位置
   4:要复制的元素个数,注意这里不能超了个数,这个不能给数组进行扩容
   
   例如:
    int [] arr1 = {1,2,3,4,5};
        int [] arr2 = {6,7,8,9,10};
        System.arraycopy(arr1,0,arr2,2,3);
        System.out.println(Arrays.toString(arr2));
        //[6, 7, 1, 2, 3]
   
   int[] a = new int[]{1,2,3,4,5};
   int[] a1 = new int[6];
   //现在a1 = {0,0,0,0,0,0}
   System.arraycopy(a,1,a1,1,4);
   //执行完这句话之后 a1 = {0,2,3,4,5,0}

   
   
   7.2 第二种方式

   import java.util.Arrays;
   
   使用java.util.Array类的copyOf方法可以实现数组的复制
   类型[] newArray = Array.copyOf(拷贝的数组,新数组的长度);
   如果传入的新数组的长度小于原数组的长度,就会直接从前到后截取相应长度
        int[] a={10,20,30,40,50};
        int[] a1 = Arrays.copyOf(a,3);
        System.out.println(Arrays.toString(a1));
        // 结果:[10, 20, 30]
   如果传入的新数组的长度大于原数组的长度,就会在后面以默认值填充.
        int[] a={10,20,30,40,50};
        int[] a1 = Arrays.copyOf(a,8);
        System.out.println(Arrays.toString(a1));
        //结果;[10, 20, 30, 40, 50, 0, 0, 0]
   
   所以产生的新数组可以大于源数组的长度,也可以小于原数组的长度
   
        因此可以这个来实现数据的扩容或者缩容
   
   //数组的扩容
   int[] a = {10,20,30,40,50};
   //数组的扩容,创建新的数组并将源数组的数据复制过去了
   a = Arrays.copyOf(a,a.length+1);
   
   //数组的缩容,创建新的数组并将源数组的数据前面一部分拷贝过去了
   a = Arrays.copyOf(a,a.length-1);


8.数组的排序

1.当数据不同时,用不同的排序方式,效率也是不同的
2.有一种排序方式,一直是最快的
   Arrays.sort(arr);
       默认是升序排列
   
long a = System.currentTimeMillis();
//获取当前时间戳,相当于python 中的time.time()

原文地址:https://www.cnblogs.com/1832921tongjieducn/p/12070056.html