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

 

posted @ 2019-07-19 10:11  DHR~小白  阅读(255)  评论(0编辑  收藏  举报