• 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()

  • 相关阅读:
    QT Launching Debugger 卡住
    VS无法打开源文件"stdio.h"
    QT 5.15 https 无法访问 TLS initialization failed
    .Net 添加第三方控件
    XML解析——DOM解析
    javascript——对象
    SQL Server 合并表 union 和union all
    深入理解HTTP
    HTTP详解(3)-http1.0 和http1.1 区别
    HTTP详解(2)
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/12070056.html
Copyright © 2020-2023  润新知