初识二维数组

    认识Arrays类
        使用Arrays类为数组排序
            使用javautilArrays类
            java.util包提供的工具类
            Arrays类提供操作数组的方法,如:排序查询
            Arrays类的sort0方法对数组进行升序排列
            Arrays.sort(数组名);
        需求说明
            获取一组(如5名)学员成绩,并使用Arrays类对其排序
                /*Arrays排序5名学员成绩*/
                Scanner input = new Scanner(System.in);
                System.out.println("请输入5名同学的成绩:");
                int[] scores = new int[5];
                for(int i= 0;i<scores.length;i++){
                    System.out.println("请输入第"+(i+1)+"名同学的成绩:");
                    scores[i] = input.nextInt();
                }
                System.out.println("*********Arrays排序前************");
                for(int num : scores){
                    System.out.println(num);
                }
                //Arrays排序
                Arrays.sort(scores);
                
                System.out.println("*********Arrays升序排序后************");
                for(int num : scores){
                    System.out.println(num);
                }
                
                System.out.println("*********Arrays降序排序后************");
                for(int i=scores.length-1;i>=0;i--){
                    System.out.println(scores[i]);
                }
                
    总结
        使用JDKAPI文档,查阅Arrays类作用
        Arrays类排序数组的方法
            Arrays sort()
            
            
            
    Arrays类的应用
        方法名称                                            说明
        boolean equals(array1,array2)                        比较array1和array2两个数组是否相等
        sort(array)                                            对数组array的元素进行升序排列
        String toString(array)                              将一个数组array转换成一个字符串
        void fill(array,val)                                把数组array所有元素都赋值为val
        copyOf(array,length)                                把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
        int binarySearch(array, val)                        查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)
    
        //equals(array1,array2) 的作用是:比较两个数组是否相等
        System.out.println("----equals(array1,array2)方法:----");
            int [] arr1 = {10,50,40,30};
            int [] arr2 = {10,50,40,30};
            int [] arr3 = {60,50,85};
            System.out.println(Arrays.equals(arr1, arr2));
            System.out.println(Arrays.equals(arr1, arr3));

        //toString(array) 的作用是:将一个数组array转换成一个字符串
        System.out.println("----toString(array)方法:----");
            int [] arr = {10,50,40,30};
            System.out.println(Arrays.toString(arr));
        
        //fill(array,val) 的作用是:把数组array的所有元素都赋值为val
        System.out.println("----fill(array,val)方法:----");
            int [] arr4 = {10,50,40,30};
            Arrays.fill(arr4, 100);
            System.out.println(Arrays.toString(arr4));
        
        //copyOf(array,length) 的作用是:把数组array复制成一个长度为length的新数组
        System.out.println("----copyOf(array,length)方法:----");
            int [] array1 = {10,50,40,30};
            int [] array2 = Arrays.copyOf(array1, 6);
            System.out.println(Arrays.toString(array2));
            int [] array3 = Arrays.copyOf(array1, 3);
            System.out.println(Arrays.toString(array3));
        
        
        //binarySearch(array, val) 的作用是:查询元素值val在数组array中的下标
        System.out.println("----binarySearch(array, val)方法:----");
            int [] array4 = {10,50,40,30};
            Arrays.sort(array4);  // 10   30  40  50
            int index = Arrays.binarySearch(array4, 30);
            System.out.println(index);
            int index1 = Arrays.binarySearch(array4, 100);
            System.out.println(index1);
        //使用Arrays类升序排列一组字符,并查找某个特殊字符在升序后数组中的位置
            // 字符排序
                char[] chars = new char[] { 'a', 'c', 'u', 'b', 'e', 'p', 'f', 'z' };
                System.out.print("原字符序列:");
                for (char oldChar:chars) {
                    System.out.print(oldChar + " ");
                }
                
                //查找特定字符b的位置
                Arrays.sort(chars);
                
                System.out.print("\n排序后的字符序列:");
                for (char oldChar:chars) {
                    System.out.print(oldChar + " ");
                }
                
                int index = Arrays.binarySearch(chars, 'b');
                System.out.println("\n字符b在数组中的位置是: "+index);
                
    总结
        Arrays类常用方法
            sort()
            binarySearch()
        常用的需记忆,其他的方法,使用JDKAPI文档,边查阅边练习
        
        
        
    认识二维数组
        为什么学习多维数组
            要求对5个班各5名学生某门课程的成绩进行各种操作,如何实现?
        分析
            1个班5名学生成绩
                长度为5的一维数组
            5个班5名学生成绩
                5个长度为5的一维数组?
        二维数组
            <数据类型>[][] 数组名; 或者 <数据类型>数组名 [][];
            int [][]scores; //定义二维数组
            scores=new int[5][50]; //分配内存空间
            //或者
            int [ ][ ] scores = new int[5][50];
            定义二维数组时,要定义最大维数
            int [ ][ ] scores = new int[5][];
            int [ ][ ] scores = new int[][];
            二维数组实际上是一个以一维数组做为元素的一维数组
            
        二维数组与内存
            int[][] s = new int [3][5]
                s[0]    s[0][0]s[0][1]s[0][2]s[0][3]s[0][4]
            s     s[1]    s[1][0]s[1][1]s[1][2]s[1][3]s[1][4]
                s[2]    s[2][0]s[2][1]s[2][2]s[2][3]s[2][4]
                
    总结
        从内存分配原理的角度讲,只有一维数组
        从语法上Java支持多维数组
        三维及以上的数组很少使用
        主要使用二维数组
        二维数组
            声明
                数据类型:数组名;或者<数据类型>数组
            二维数组与内存
                必须自己能画出来,并快速定位到某个元素
            二维数组定义时,[]中两个数字分别代表什么?
            
            
            
    二维数组定义与使用
        定义并赋值
            写法一
                int[][] scores = new int[][]{{ 90, 85, 92, 78, 54 3},{76, 63,80 3},{87}};
            写法二
                int scores[][] = {{ 90, 85, 92, 78, 54},{76, 3,80},{87}};
            案例
                //有5个班各5名学生某门课程的成绩,如何计算5个班各自的总成绩
                    int[][] scores = new int[5][5]; //第一个5代表5个班;第二个5代表是每个班5个同学的成绩
                    Scanner input = new Scanner(System.in);
                    //为班级的同学成绩赋值
                    //外层循环- 班  ;内层循环-班里的同学
                    for(int i=0;i<scores.length;i++){
                        System.out.println("-------第"+(i+1)+"个班-------");
                        for(int j=0;j<scores[i].length;j++){
                            System.out.print("请输入第"+(i+1)+"个班第"+(j+1)+"个同学的成绩:");
                            scores[i][j]= input.nextInt();
                        }
                    }
                    //完成5个班级的成绩统计
                    System.out.println("--------统计成绩---------");
                    
                    for(int i=0;i<scores.length;i++){
                        int sum = 0; //每个班同学成绩的总分
                        for(int j=0;j<scores[i].length;j++){
                            sum += scores[i][j];
                        }
                        System.out.println("第"+(i+1)+"个班的同学总成绩为:"+sum);
                    }
                
        总结
            二维数组定义与赋值
                两种写法对比一维数组
            二维数组的使用
                二维数组结合双重循环使用是重难点需反复观看视频,练习代码
                内外层循环变量的含义是理解的关键
                
                
总结
    使阳冒泡排序从小到大排列5个数字的思路是什么?
    如何使用Arrays类排序一个数组?查找一个元素?
    遍历一个二维数组的思路是什么 ?
            
            
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值