1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        No 6. 數(shù)組操作的奇技淫巧

        共 10949字,需瀏覽 22分鐘

         ·

        2021-04-26 21:04

        微信搜一搜
        村雨遙

        前言

        前邊已經(jīng)講過了 Java 中的 8 大基本數(shù)據(jù)類型,這篇文章主要就來講講引用類型中的數(shù)組。主要內(nèi)容安排如下:

        • 數(shù)組簡介
        • 遍歷
        • 排序
        • 常用方法

        數(shù)組簡介

        所謂數(shù)組,其實就是多個相同數(shù)據(jù)類型的元素按一定順序排列而成的集合。即將有限個類型相同的變量放到一個容器中,然后按照編號去訪問各個元素,而容器的名字就叫做數(shù)組名,各個元素的編號就叫做索引位置。而其中索引位置是從 0 開始計數(shù),而不是我們?nèi)粘K?xí)慣的 1。

        要定義一個數(shù)組類型的遍歷,其語法為 數(shù)據(jù)類型 [],比如 int[],而且在初始化時必須指定數(shù)組大小,如 int[] arr = new int[10],表示 arr 數(shù)組可以容納 10int 類型的元素。

        數(shù)組的特點:

        • 數(shù)組中的元素初始化時都是有默認(rèn)值的,整型對應(yīng) 0,浮點型對應(yīng) 0.0,而布爾型對應(yīng) false;
        • 數(shù)組一經(jīng)創(chuàng)建,其大小就不可再變;
        • 要訪問數(shù)組中的某一元素,需要用到索引,索引從 0 開始;
        • 如果要修改數(shù)組中的某一元素,直接對對應(yīng)索引位置的元素使用賦值語句即可;

        一維數(shù)組

        初始化

        1. 靜態(tài)初始化

        所謂靜態(tài)初始化,就是在定義數(shù)組的同時將其初始化;

        int[] arr1 = {135810};
        int[] arr2 = new int[] {135810};
        1. 動態(tài)初始化

        動態(tài)初始化,就是先聲明數(shù)組定義之后,再對其進行賦值;

        int[] arr = new int[5];
        arr[0] = 1;
        arr[1] = 3;
        arr[2] = 5;
        arr[3] = 8;
        arr[4] = 10;

        PS:注意數(shù)組的索引位置不能超過數(shù)組的長度,如上面例子中的數(shù)組長度為 5,所以我們數(shù)組的索引位置最大只能為 4,否則就會報數(shù)組越界錯誤。

        求數(shù)組長度

        求數(shù)組的長度,利用數(shù)組的 length 屬性即可;

        int[] arr = new int[10];
        int size = arr.length; // 10
        System.out.println("size = " + size);

        二維數(shù)組

        初始化

        1. 靜態(tài)初始化
        int[][] arr1 = {{1, 2, 4}, {5, 7, 9}, {19, 12, 18}};
        1. 動態(tài)初始化

        二位數(shù)組動態(tài)聲明時,一種是把行和列的長度都指定,而另一種是只需要指定行的長度,不用指定列的長度,列的長度會在初始化時自動確認(rèn)。

        int[][] arr1= new int[3][3];
        arr1 = new int[][]{{1, 2, 4}, {5, 7, 9}, {19, 12, 18}};

        int[][] arr2= new int[3][];
        arr2 = new int[][]{{1, 2, 4}, {5, 7, 9}, {19, 12, 18}};

        求數(shù)組長度

        不同于一維數(shù)組,因為二維數(shù)組有行和列,所需求長度時需要分別求。

        int[][] arr = new int[10][20];

        // 求行的長度
        int row = arr.lenght;
        // 求列的長度,此時求任意一行所在的列的長度即可
        int col = arr[0].length;

        數(shù)組遍歷

        既然我們已經(jīng)學(xué)會了數(shù)組的聲明及初始化,接下來就是對數(shù)組進行操作,而最常見的則是遍歷數(shù)組。

        假設(shè)我們有一個數(shù)組如下:

        String[] arr = new String[5];
        arr = new String[]{"村雨遙""海賊王""進擊的巨人""鬼滅之刃""斗羅大陸"};

        標(biāo)準(zhǔn) for 循環(huán)

        首先,我們來使用標(biāo)準(zhǔn)的 for 循環(huán)來遍歷該數(shù)組,只需要通過數(shù)組的索引位置來訪問即可。

        /**
         * @author : cunyu
         * @version : 1.0
         * @className : TraverseTest
         * @date : 2021/4/25 11:52
         * @description : 遍歷
         */


        public class TraverseTest {
            public static void main(String[] args) {
                String[] arr = new String[5];
                arr = new String[]{"村雨遙""海賊王""進擊的巨人""鬼滅之刃""斗羅大陸"};

        //        數(shù)組長度
                int size = arr.length;
                for (int i = 0; i < size; i++) {
                    System.out.println("第 " + (i + 1) + " 個元素:" + arr[i]);
                }
            }
        }

        增強 for 循環(huán)

        /**
         * @author : cunyu
         * @version : 1.0
         * @className : EnforceTraverseTest
         * @date : 2021/4/26 9:14
         * @description : 增強 for 循環(huán)
         */


        public class EnforceTraverseTest {
            public static void main(String[] args) {
                String[] arr = new String[5];
                arr = new String[]{"村雨遙""海賊王""進擊的巨人""鬼滅之刃""斗羅大陸"};
                int index = 0;
                for (String name : arr) {
                    System.out.println("第 " + (index + 1) + " 個元素:" + name);
                    index++;
                }
            }
        }

        兩者的區(qū)別:標(biāo)準(zhǔn) for 循環(huán)是通過計數(shù)器來進行遍歷,我們能夠很清晰的得知每個元素所對應(yīng)的索引位置,而增強 for each 循環(huán)則是直接訪問數(shù)組中的元素值,而不關(guān)心每個元素對應(yīng)的索引位置。

        標(biāo)準(zhǔn)庫遍歷

        通過調(diào)用標(biāo)準(zhǔn)庫 Arrays 中的 toString() 方法,我們可以將任意類型的數(shù)組轉(zhuǎn)換為一個字符串表示形式,從而打印出來。

        import java.util.Arrays;

        /**
         * @author : cunyu
         * @version : 1.0
         * @className : StandardLibraryTest
         * @date : 2021/4/26 9:22
         * @description : 標(biāo)準(zhǔn)庫遍歷
         */


        public class StandardLibraryTest {
            public static void main(String[] args) {
                String[] arr = new String[5];
                arr = new String[]{"村雨遙""海賊王""進擊的巨人""鬼滅之刃""斗羅大陸"};
                System.out.println(Arrays.toString(arr));
            }
        }

        以上的遍歷主要是針對一維數(shù)組,而針對二維數(shù)組,當(dāng)我們要訪問其中的一個元素時,可以使用 array[row][col] 來進行訪問,而對于二維及更多維的數(shù)組,可以使用 Arrays.deepToString()。

        數(shù)組排序

        使用排序算法

        排序算法多樣,最常用的則有 冒泡排序、插入排序、快速排序等,進行排序時會修改數(shù)組本身;

        冒泡排序:經(jīng)過一輪循環(huán),將最大的數(shù)置換到末尾,然后進入下一輪循環(huán),每輪均比上一輪的結(jié)束位置靠前一位;

        import java.util.Arrays;

        /**
         * @author : cunyu
         * @version : 1.0
         * @className : BubbleSort
         * @date : 2021/4/26 10:16
         * @description : 冒泡排序
         */


        public class BubbleSort {
            public static void main(String[] args) {
                char[] chArray = {'c''u''n''y''u'};
                // 排序前
                System.out.println(Arrays.toString(chArray));

                for (int i = 0; i < chArray.length - 1; i++) {
                    for (int j = 0; j < chArray.length - 1 - i; j++) {
                        // 從大到小
                        if (chArray[j] < chArray[j + 1]) {
                            // 交換
                            char temp = chArray[j];
                            chArray[j] = chArray[j + 1];
                            chArray[j + 1] = temp;
                        }
                    }
                }
                // 冒泡排序后
                System.out.println(Arrays.toString(chArray));
            }
        }

        標(biāo)準(zhǔn)庫排序

        import java.util.Arrays;

        /**
         * @author : cunyu
         * @version : 1.0
         * @className : StandardLibrarySortTest
         * @date : 2021/4/26 10:22
         * @description : 標(biāo)準(zhǔn)庫排序
         */


        public class StandardLibrarySortTest {
            public static void main(String[] args) {
                String[] arr = new String[]{"村雨遙""海賊王""進擊的巨人""鬼滅之刃""斗羅大陸"};

        //        排序前
                System.out.println(Arrays.toString(arr));
        //        標(biāo)準(zhǔn)庫排序
                Arrays.sort(arr);
        //        排序后
                System.out.println(Arrays.toString(arr));
            }
        }

        常用方法

        對于數(shù)組而言,Java 標(biāo)準(zhǔn)庫中已經(jīng)內(nèi)置了許多方法,常用的有如下一些方法:

        返回值方法描述
        static StringtoString(Object[] a)輸出數(shù)組的字符串形式
        static <T> List<T>asList(T…… a)數(shù)組轉(zhuǎn) List
        import java.util.ArrayList;
        import java.util.Arrays;
        import java.util.List;

        /**
         * @author : cunyu
         * @version : 1.0
         * @className : CommonMethodsTest
         * @date : 2021/4/26 10:37
         * @description : 常用方法
         */


        public class CommonMethodsTest {
            public static void main(String[] args) {
                String[] arr = new String[]{"村雨遙""海賊王""進擊的巨人""鬼滅之刃""斗羅大陸"};
        //        輸出數(shù)組的字符串形式
                System.out.println("打印數(shù)組");
                System.out.println(Arrays.toString(arr));
        //        數(shù)組轉(zhuǎn)列表
                System.out.println("數(shù)組轉(zhuǎn)列表");
                List<String> list = new ArrayList<String>(Arrays.asList(arr));
                System.out.println(list);

                System.out.println("列表轉(zhuǎn)數(shù)組");
                list.add("鎮(zhèn)魂街");
                String[] newArr = new String[list.size()];
                list.toArray(newArr);
                System.out.println(Arrays.toString(newArr));

                System.out.println("數(shù)組是否包含某一元素");
                System.out.println(Arrays.asList(newArr).contains("進擊的巨人"));
                System.out.println(Arrays.asList(newArr).contains("網(wǎng)球王子"));
            }
        }

        總結(jié)

        數(shù)組相關(guān)的內(nèi)容就到此結(jié)束了,主要從 4 個方面簡單介紹了數(shù)組的一些相關(guān)用法,如果你有更多想要了解的內(nèi)容,歡迎評論區(qū)留言交流。最后,都看到這兒了,不給個贊和關(guān)注再走么 ??.



        瀏覽 55
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美黑人巨大巨粗巨长 | freesex小白嫩video | 蜜桃成人久久 | 五月天色综合 | 舔女生下面视频 | 老司机视频在线视频18 | 我把她下药做得好爽 | 飞机上疯狂做爰2电影 | 五月天色婷婷丁香社区欧美网址 | 亚洲情趣视频 |