• 9、数组


    一、回顾  

        1》数组基本要素:
          标识符(数组名称、变量名)
          数组元素(数组中保存的数据)
          元素下标(数据的编号)
          元素类型(数组中存储的数据的数据类型)
        2》使用数组
            声明数组
            int[] array; int array[];
            分配内存空间
            array = new int[5];
            赋值
            array[3]=3;
            使用
            array[1]++
            边声明边赋值
            int[] array = {1,2,3};
            int[] array = new int[]{1,2,3};
        3》不赋值的话,给出来就是默认值,是0,0.0,false,"";

    二、java的变量类型:两种

      1、值类型的变量:8中基本数据类型的变量

      2、引用类型的变量:通过new的方式创建出来的;(除了基本数据类型,都是引用类型的)  

          数组Scanner
          toString():把类型和内存地址拿出来,这是object默认的

      3、String也是引用数据类型的

        String str = new String("噶哈哈");

        String str = "ah ds";

        这两种的存储方式是不同的

    三、一些小知识

          System.out.println(array);
          [I@15db9742 :[标识数组;I:标识数据类型;后边是内存地址

          快捷键:
          foreach+alt+?
          for+alt+?

    四、增强型for循环/for-each循环

      

    //for-each
            //没有初始化循环变量,循环条件,更新循环变量,只有循环体;一种特殊的循环
            for(int num:array) {
                System.out.println(num);
            }
    //        int[] array = {1,2,3};
    //        System.out.println(array);
            //for
    //        for(int i=0;i<array.length;i++) {
    //            System.out.println(array[i]);
    //        }
            //while
    //        int i=0;
    //        while(i<array.length) {
    //            System.out.println(array[i]);
    //            i++;
    //        }
            //do-while
    //        int i=0;
    //        do {
    //            System.out.println(array[i]);
    //            i++;
    //        }while(i<array.length);
            //for-each
            //没有初始化循环变量,循环条件,迭代条件只有循环体;一种特殊的循环
    //        for(int num:array) {
    //            System.out.println(num);
    //        }
            

    五、针对“无”和“空”的反思

     

    initialize:初始化;
    null:标识为无,只能适用于引用的数据类型
    //无:null
    int[] array2 = null;
    for(int num:array2) {
    System.out.println(num);
    }
    //java.lang.NullPointerException


    //空:00000
    int[] array2 = new int[3];
    for(int num:array2) {
    System.out.println(num);
    }
    //基本数据类型的默认值:byte,short,int,long:0;float,double:0.0;char:'';boolean:false;String:null;

    //        //无:null
    //        int[] array2 = null;
    //        for(int num:array2) {
    //            System.out.println(num);
    //        }
    //        //java.lang.NullPointerException
            
            ////        String[] array2 = new String[3];
    //        for(String num:array2) {
    //            System.out.println(num);
    //        }

    六、数组的新增和删除

    因为数组的长度一旦确定,是不能改变的;
    新增:相当于赋值;
    删除:把其他的值顺序覆盖要删除的值,把最后一个赋值为初始化的值。

    七、一些例子

    /**
             * 例子:
            收银员输入5笔购物金额,在控制台输出5笔金额,并且计算总和
             */
            
    //        Scanner s = new Scanner(System.in);
    //        float[] array = new float[5];
    //        float sum = 0F;
    //        for(int i=0;i<5;i++) {
    //            System.out.println("请输入第"+(i+1)+"笔购物金额:");
    //            array[i] = s.nextFloat();
    //        }
    ////        for(int i=0;i<array.length;i++) {
    ////            System.out.println("第"+(i+1)+"笔金额为:"+array[i]);
    ////            sum += array[i];
    ////        }
    //        int i=1;
    //        for (float f : array) {
    //            System.out.println("第"+i+++"笔金额为:"+f);
    //            sum += f;
    //        }
    //        System.out.println("总金额为:"+sum);
            
    /**
             * 例子:有一组学员的成绩{99,85,82,63,60}
             * 新增一个学院的成绩,添加到数组中,同事要求新的数组同样保持降序排列
             */
    //        float[] array = {99,85,82,63,60}; 
    //        Scanner s = new Scanner(System.in);
    //        System.out.println("请输入新学员的成绩:");
    //        float score = s.nextFloat();
    //        //将score插入到array中
    //        float[] array2 = new float[6];
    //        //找到新的数据再老数组中应该在的位置
    //        int index = 5;
    //        for (int i = 0; i < array.length; i++) {
    //            if(score>array[i]) {
    //                index = i;
    //                break;
    //            }
    //        }
    //        //填充array2
    //        for (int i = 0; i < array2.length; i++) {
    //            if(index==i) {
    //                array2[index] = score;
    //            }else if(index>i){
    //                array2[i] = array[i];
    //            }else {
    //                array2[i] = array[i-1];
    //            }
    //        }
    //        //循环遍历展示结果
    ////        for (int i = 0; i < array2.length; i++) {
    ////            System.out.println(array2[i]);
    ////        }
    //        
    //        for (float f : array2) {
    //            System.out.println(f);
    //        }

    八、冒泡排序

    交换两个变量的值,则需要三个值进行交换
    冒泡排序,是比较总个数-1次
    升序口诀:n个数字来排队,两两相比小靠前,外层循环n-1,内层循环n-1-i(外层的循环变量)。
    降序口诀:n个数字来排队,两两相比大靠前,外层循环n-1,内层循环n-1-i(外层的循环变量)。

    /**
             * 冒泡排序:让array升序排列:
             * 数组中的数据依次两两进行对比,大的数字放到后边:依次找到最大值、次大值等
             */
    //        int[] array = {77,100,66,88,99};
    //        int num ;
    //        for (int j = 0; j < array.length-1; j++) {//比的次数为总个数-1
    //            for (int i = 0; i < array.length-1-j; i++) {
    //                if(array[i]>array[i+1]) {//如果有比num大的数字,则进行交换
    ////                    if(array[i]<array[i+1]) {//降序
    //                    num = array[i];
    //                    array[i] = array[i+1];
    //                    array[i+1] = num;
    //                }
    //            }
    //            
    //        }
    //        for (int i : array) {
    //            System.out.println(i);
    //        }

    九、数组的常用方法Arrays:专门针对数组的工具类;提供了操作胡数组的方法

        1》boolean equals(array1,array2);比较两个数组是否相等(1、数组长度一致,2每一位的元素相等)
        2》sort(array);对数组进行升序排列
        3》String toString(array);将数组转换成字符串
        4》fill(array,val);//将数组替换成val
        5》array copeOf(array,length);//将数组进行复制成一个长度为length的新数组,数组元素保持不变
        6》int binarySearch(array,val);//查询元素val在数组array中的下标(必须先进行sort排序)

            /**
             * 判断数组是否相等
             */
    //        int[] array1= {1,2};
    //        int[] array2 = {1,2,6};
    //        boolean flag = Arrays.equals(array1, array2);
    //        System.out.println(flag);
            /**
             * 升序
             */
            int[] array = {77,100,66,77,88,99,99};
            Arrays.sort(array);
            for (int i : array) {
                System.out.println(i);
            }
            /**
             * 转换成字符串
             */
    //        System.out.println(Arrays.toString(array));
            
            /**
             * 替换
             */
    //        Arrays.fill(array, 6);
    //        System.out.println(Arrays.toString(array));
            /**
             * 复制
             */
    //        int[] array2 = Arrays.copyOf(array, 3);
    //        System.out.println(Arrays.toString(array));
    //        System.out.println(Arrays.toString(array2));
            
            /**
             * 查找索引
             */
            int index = Arrays.binarySearch(array, 77);
            System.out.println(index);
  • 相关阅读:
    sql server 跨库操作
    FPGA使用技巧
    MATLAB学习(3)
    FPGA统计摄像头输出-基于MD9T112
    zedboard VmodCAM 图像采集 HDMI输出显示
    VmodCAM图像采集 VGA显示
    EDK中如何使用ISE中生成的IP
    如何将HDL文件实例化到XPS中
    ubuntu下安装 Source insight
    VmodCAM 初始化
  • 原文地址:https://www.cnblogs.com/dhrwawa/p/11211595.html
Copyright © 2020-2023  润新知