• Java学习Day018(第四章数组笔记)


    4.1.1 一维数组

    1、 理解数组
                (1)在Java中,数组是用来存储一组相同类型数据的数据结构。
                (2)当数组初始化完毕后,Java为数组在内存中分配一段连续的空间,其在内存中开辟的空间也将随之固定,此时数组的长度就不能再发生改变。
                (3)即使数组中没有保存任何数据,数组所占据的空间依然存在。
            2、 定义数组
                在Java中,定义数组的语法有如下两种:
                    数据类型[] 数组名 = new 数据类型[数组长度];
                或者:
                    数据类型 数组名[] = new 数据类型[数组长度];
                --->定义数组时一定要指定数组名和数组类型
                --->必须书写“[]”,表示定义了一个数组,而不是一个普通的变量。
                --->“[数组长度]”决定连续分配的空间的个数,通过数组的length属性可获取此长度。
                --->数组的数据类型用于确定分配的每个空间的大小。
                --->数组元素分配的初始值如下
                    数据元素类型                    默认初始值
                    byte、short、int、long        0
                    float、double                0.0
                    char                        '\u0000'
                    boolean                        false
                    引用数据类型                    null
            3、 数组元素的表示与赋值
                (1)数组元素在数组里顺序排列编号,该编号即元素下标,它标明了元素在数组中的位置。
                (2)首元素(第一个元素)的编号规定为0,因此,数组的下标依次为0、1、2、3、4······依次递增,每次增长数是1.
                (3)数组中的每个元素都可以通过下标来访问。
                    获取数组元素的语法格式如下:
                        数组名[下标值]
            4、 数组的初始化
                所谓数组的初始化,就是在定义数组的同时一并完成赋值操作。
                数组初始化的语法格式如下:
                    数据类型[] 数组名 = {值1,值2,值3,····,值n};
                或者:
                    数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,····,值n};
                注意:第二种初始化数组的方式里new 数据类型[]的[]括号里不能写数组长度。
            5、 遍历数组
                (1)使用for循环遍历数组
                        for(int i = 0;i<数组名.length;i++){
                            System.out.println(数组名[i]);
                        }
                (2)使用增强for循环遍历数组
                        for(元素类型 变量名:数组名){
                            System.out.println(变量名);
                        }
                ---->增强for循环是JDK1.5之后提供的,用来实现对数组和集合中数据的访问,增强for循环的语法格式如下:
                    for(元素类型 变量名 : 要循环的数组或集合名){
                        ······
                    }
                        -->第一个元素类型是数组或集合中元素的类型。
                        -->变量名在循环时用来保存每个元素的值。
                        -->冒号后面是要循环的数组或集合名称。
            6、 使用数组计算成绩
                (1)求数组中的最大值/最小值
                    思路:
                        1)假设数组中第一个元素(下标为0的元素)为最大值/最小值。
                        2)然后依次将后面元素和假设的最大值/最小值进行比较。
                        3)如果后续元素比假设的最大值/最小值大/小的话,就取代假设的最大值/最小值,成为新的最大值/最小值。
                        4)比较完数组里所有的元素后,获得最大值/最小值。
                (2)向数组中添加元素
                    思路:
                        1)创建一个比原来数组长度大1的新数组。
                        2)将原来数组的元素存储在新数组中,按照从前到后的顺序存储。
                        3)找到插入元素要插入的位置。
                        4)从插入位置开始到后面的元素依次往后移动一个位置(最后一个元素先移)。
                        5)插入元素
                (3)修改数组中的元素
                    思路:
                        1)找到要修改的元素。
                        2)修改元素。
                (4)删除数组中的元素
                    思路:
                        1)找到要删除的元素。
                        2)删除元素。
                        3)将删除元素后面的元素依次前移,最后位置的元素修改为默认值。
                (5)数组冒泡排序
                    思路:
                        1)将数组中元素两两比较,大的数(小的数)往后排(往前排)。
                        2)每一轮将大数(小数)排在最后面(最前面)位置。
                        3)多轮比较后,得出升序(降序)排列的数组。
                    代码(升序排序):以int类型的数组arr为例
                        for(int i = 0;i
                            for(int j = 0;j
                                if(arr[j]>arr[j+1]){
                                    int temp = arr[j];
                                    arr[j] = arr[j+1];
                                    arr[j+1] = temp;
                                }
                            }
                        }


        4.1.2 常见问题


            1、数组下标越界异常:ArrayIndexOutOfBoundsException
                数组下标从0开始,而不是从1开始。
                如果访问数组元素时指定的下标小于0或者大于等于数组的长度,都将出现下标越界异常。
                


        4.2.1 二维数组


            (1)Java中操作多位数组的语法与一维数组类似。在实际应用中,三维以上的数组很少使用,主要使用二维数组。
            (2)二维数组是一个元素为一维数组的一维数组。
            (3)从语法上Java支持多维数组,但从内存分配原理的角度看,Java中只有一维数组,没有多维数组。或者说,从表面上是多维数组,实质上都是一维数组。
            (4)定义二维数组的语法格式如下:
                    数据类型[][] 数组名;
                  或者:
                      数据类型 数组名[][];
                  --->数据类型为数组元素的类型。
                  --->“[][]”用于表明定义了一个二维数组,通过多个下标进行数据访问。
                  --->“数组名[下标]”表示二维数组里的一个元素,这个元素还是一个一维数组。
                  --->“数组名[下标][下标]”表示二维数组里的一个元素(一维数组)里的一个元素。
        4.2.2 二维数组的使用
            1、 初始化二维数组
                二维数组初始化的语法格式如下:
                    数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};
                或者:
                    数据类型[][] 数组名 = {{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};    
            2、 二维数组的遍历
                    for(int i = 0;i<数组名.length;i++){
                        for(int j = 0;j<数组名[i].length;j++){
                            System.out.println(数组名[i][j]);
                        }
                    }


        4.3.1 Arrays类


            (1)JDK中提供了一个专门用于操作数组的工具类,即Arrays类,位于java.util包中。
            (2)该类提供了一系列方法来操作数组,如排序、复制、比较、填充等,用户直接调用这些方法即可,不需要自己编码实现,降低了开发难度。
            (3)Arrays类的常用方法介绍
                方法                            返回类型                说明
                equals(array1,array2)        boolean                    比较两个数组是否相等
                sort(array)                    void                    对数组array的元素进行升序排列
                toString(array)                String                    将一个数组array转换成一个字符串
                fill(array,val)                void                    把数组array的所有元素都赋值为val
                copyOf(array,length)        与array数据类型一致        把数组array复制成一个长度为length的新数组
                binarySearch(array,val)        int                        查询元素值val在数组array中的下标
        4.3.2 Arrays类的应用
            1、 比较两个数组是否相等
                Arrays类的equals()方法用于比较两个数组是否相等。只有当两个数组长度相等,对应位置的元素也一一相等时,该方法返回true;否则返回false。
            2、 对数组的元素进行升序排列
                Arrays类的sort()方法对数组的元素进行升序排列,即以从小到大的顺序排列。
            3、将数组转换成字符串
                Arrays类中提供了专门输出数组内容的方法——toString()方法。该方法用于将一个数组转换成一个字符串。
                它按顺序把多个数组元素连在一起,多个数组元素之间使用英文逗号和空格隔开。
                利用这种方法可以很清楚地观察到各个数组元素的值。
            4、 将数组所有元素赋值为相同的值
                Arrays类的fill(array,val)方法用于把数组array的所有元素都赋值为val。
            5、 将数组复制成一个长度为设定值的新数组
                使用Arrays类的copyOf()方法把数组复制成一个长度为设定值的新数组。
            6、 查询元素在数组中的下标
                Arrays类的binarySearch()方法用于查询数组元素在数组中的下标。
                调用该方法时要求数组中的元素已经按升序排列,这样才能得到正确的结果。

     一生朋友一生情,一生有你才会赢;千山万水总是情,点个关注行不行!

                

  • 相关阅读:
    23年7/8月前端面试题总结
    PLC液压控制系列之比例流量阀结构分析
    python元类(type)
    tcpdump抓包与iptables过滤的关系
    前端架构师之10_JavaScript_DOM
    5. 二叉树定义、【满二叉树、完全二叉树、二叉排序树、平衡二叉树】、二叉树的性质、二叉树的存储结构
    leetcode114 二叉树展开为链表
    MFC Windows 程序设计[239]之托盘通知展示(附源码)
    ARM汇编(gun-complier)
    Vue 全套教程(三),入门 Vue 必知必会
  • 原文地址:https://blog.csdn.net/SSSS__AS/article/details/126042605