1. 程式人生 > >小猿圈java之陣列

小猿圈java之陣列

基本資料結構中,陣列是很重要的,這篇小猿圈加加對陣列詳解一席,具體使用,在學習過程中有困惑的朋友,可以看一下加加的這篇文章,看到就是賺到,讓我們一起看看吧。

一、陣列的基本使用

public class Array01 {

    /**

    * 陣列:一組相同資料型別的集合!  在記憶體中開闢一連串的空間!

    *  和String一樣都是  引用資料型別! 

    *  資料型別 [] 陣列名稱; 

    *  陣列的下標=陣列的長度-1

    */

    public static void main(String[] args) {

        // 01.宣告陣列 建立了一個火車廂

        int[] nums;

        // 02.分配空間 給火車廂建立座位

        nums = new int[5];

        // 03.賦值 旅客入座

        nums[0] = 50;

        // 04.使用 nums.length(獲取陣列的長度)

        for (int i = 0; i < nums.length; i++) {

            System.out.println("陣列nums的第" + (i + 1) + "個位置的資料是:" + nums[i]);

        }

    }



    // 宣告陣列的同時給陣列賦值

    @Test

    public void test01() {

        /**

        * 給你說 建立車廂的同時,告訴你裡面有多少個座位

        *

        * int  [] nums;

        * nums={ 1, 2, 3, 4, 5 };  這種寫法是錯誤的!

        */

        int[] nums = { 1, 2, 3, 4, 5 };

        // 找到下標為3的資料

        System.out.println(nums[3]);

    }

    @Test

    public void test02() {

        // int[] nums = new int[5]; 可以 常用的方式

        int[] nums = new int[] { 1, 2, 3, 4, 5 };

        // 找到下標為3的資料

        System.out.println(nums[3]);

    }

    /**

    * 計算5位學生的平均分

    */

    @Test

    public void test03() {

        // 01.建立一個長度為5的double型別的陣列 儲存學生成績

        double[] scores = new double[5];

        // 02.迴圈給學生成績賦值

        Scanner scanner = new Scanner(System.in);

        double sum = 0; // 儲存總成績

        for (int i = 0; i < scores.length; i++) {

            System.out.println("請輸入第" + (i + 1) + "位同學的成績");

            scores[i] = scanner.nextDouble();

            // 每個學生成績需要加到sum中

            sum += scores[i];

        }

        System.out.println("學生的總成績是:" + sum);

        System.out.println("學生的平均分是:" + (sum / scores.length));

    }

    /**

    * 有一個數列:8,4,2,1,23,344,12

    迴圈輸出數列的值

    求數列中所有數值的和

    猜數遊戲:從鍵盤中任意輸入一個數據,判斷數列中是否包含此數

    */

    @Test

    public void test04() {

        // 01.建立int型別陣列

        int nums[] = { 8, 4, 2, 1, 23, 344, 12 };

        // 定義變數儲存總和

        int sum = 0;

        // 02.迴圈輸出數列的值

        for (int i = 0; i < nums.length; i++) {

            System.out.print(nums[i] + ",");

            sum += nums[i];

        }

        System.out.println("\n陣列中數值的總和:" + sum);

        // 猜數遊戲:從鍵盤中任意輸入一個數據,判斷數列中是否包含此數

        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入一個數字:");

        int num = scanner.nextInt();

        // 定義標記 來記錄是否中獎

        boolean flag = false;

        for (int i = 0; i < nums.length; i++) {

            if (num == nums[i]) {

                flag = true;

                break;

            }

        }

        if (flag) { // 判斷標記

            System.out.println("恭喜您!中大獎!");

        } else {

            System.out.println("沒有找到......");

        }

    }

    /**

    * 以表格的形式輸出5筆購物金額及總金額

    */

    @Test

    public void test05() {

        double[] pays = new double[5];

        double sum = 0; // 總金額

        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入本月的消費記錄:");

        for (int i = 0; i < pays.length; i++) {

            System.out.println("請輸入" + (i + 1) + "次的消費金額:");

            pays[i] = scanner.nextDouble(); // 給陣列中每一個元素賦值

            // 求和

            sum += pays[i];

        }

        // 輸出消費詳情 遍歷(從集合中取得資料)

        System.out.println("序號\t\t金額");

        for (int i = 0; i < pays.length; i++) {

            System.out.println((i + 1) + "\t\t" + pays[i]);

        }

        System.out.println("總金額:" + sum);

    }

    /**

    * Arrays  :陣列的操作類

    */

    @Test

    public void test06() {

        double[] pays = new double[5];

        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入本月的消費記錄:");

        for (int i = 0; i < pays.length; i++) {

            System.out.println("請輸入" + (i + 1) + "次的消費金額:");

            pays[i] = scanner.nextDouble(); // 給陣列中每一個元素賦值

        }

        // 沒有排序的遍歷

        for (int i = 0; i < pays.length; i++) {

            System.out.println(pays[i]);

        }

        System.out.println("*************升序之後***************");

        Arrays.sort(pays);// 升序排列

        for (int i = 0; i < pays.length; i++) {

            System.out.println(pays[i]);

        }

    }

}

二、運算元組的工具類

/**

* 運算元組的工具類!

*/

public class Arrays02 {

    // equals(arr1, arr2) :比較兩個陣列的內容和長度 是否一致

    @Test

    public void testEquals() {

        int[] nums1 = { 10, 20, 30, 50 };

        int[] nums2 = nums1;

        int[] nums3 = { 10, 20, 30 };

        System.out.println("nums1與nums2比較:" + Arrays.equals(nums1, nums2));

        System.out.println("nums1==nums2比較:" + (nums1 == nums2));

    }

    // sort(arr):對陣列中的元素進行升序的排列

    @Test

    public void testSort() {

        int[] nums = { 10, 50, 30, 20 };

        Arrays.sort(nums);

        for (int i = 0; i < nums.length; i++) {

            System.out.println(nums[i]);

        }

    }

    /**

    *  toString :把一個數組變成字串

    *  [10, 50, 30, 20]  集合toString的結果!

    */

    @Test

    public void testToString() {

        int[] nums = { 10, 50, 30, 20 };

        System.out.println(Arrays.toString(nums));

    }

    /**

    * fill(arr,val):將arr陣列中的所有元素都賦值成了val

    */

    @Test

    public void testFill() {

        int[] nums = { 10, 50, 30, 20 };

        System.out.println(Arrays.toString(nums));

        Arrays.fill(nums, 100);

        System.out.println(Arrays.toString(nums));

    }

    /**

    * copyOf(arr,length):將陣列arr複製成一個長度為length的新陣列!

    */

    @Test

    public void testCopyOf() {

        int[] nums = { 10, 50, 30, 20 };

        int[] nums1 = Arrays.copyOf(nums, 3);

        System.out.println(Arrays.toString(nums1));

    }

    /**

    * binarySearch(arr,val):查詢val在arr陣列中的下標!

    * 必須先升序排列!  Arrays.sort(arr)!!!!

    */

    @Test

    public void testBinarySearch() {

        int[] nums = { 10, 50, 30, 20 };

        Arrays.sort(nums); // 10 20 30 50

        System.out.println(Arrays.binarySearch(nums, 50));

    }

}

三、多重陣列

public class DoubleArray04 {

    public static void main(String[] args) {

        int[] clazz = new int[3]; // 儲存班級

        int[] students = new int[5]; // 儲存學生

    }

    @Test

    public void test01() { // 宣告的同時開闢空間

        int[][] nums = new int[3][5]; // 3個班級各5名學生

    }

    @Test

    public void test02() { // 先宣告 再 開闢空間

        int[][] nums;

        nums = new int[3][5]; // 3個班級各5名學生

    }

    @Test

    public void test03() { // 宣告 開闢空間的同時賦值

        int[][] nums = { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 },

                { 1, 2, 3, 4, 5 } };

        System.out.println(nums.length);// 3個班級各5名學生

    }

    @Test

    public void test04() {

        int[][] nums = new int[3][5]; // 3個班級各5名學生

        // 第二個班級的第三個學生

        nums[1][2] = 50;

    }

    @Test

    public void test05() {

        int[][] nums = { { 1, 2, 3 }, { 10, 20, 30 }, { 100, 200, 300 } };

        /**

        * nums.length  車廂數

        * nums[i].length 車廂中的座位數

        * 雙重迴圈:

        *  外層迴圈執行一次,記憶體迴圈執行一遍!

        */

        for (int i = 0; i < nums.length; i++) {

            System.out.println("進入了第" + (i + 1) + "個車廂**********");

            if (i == 2) {

                break; // 跳出當前迴圈體

            }

            for (int j = 0; j < nums[i].length; j++) {

                if (j == 2) {

                    break; // 跳出當前迴圈體

                }

                System.out.println(nums[i][j]);

            }

        }

    }

    /**

    * 所有的引用資料型別如果沒有例項化(開闢空間)! 不能使用!

    * 因為引用資料型別的預設值 是  null!

    */

    @Test

    public void test06() {

        int[][] nums = new int[5][];

        System.out.println(nums.length);

        nums[0] = new int[5]; // 開闢空間

        nums[1] = new int[6];

        nums[0][0] = 50; // 使用

        nums[0][1] = 60;

        nums[0][2] = 70;

        nums[0][3] = 80;

        System.out.println(nums[0].length);

        System.out.println(nums[1].length);

    }

}

四、二維陣列

/**

    * 二維陣列: 陣列中的元素 又是一個數組!

    */

    @Test

    public void test06(){

        //01.建立二維陣列

        int[][] nums=new int[3][3]; //int [][] nums2={{1,2,3},{4,5,6},{7,8,9}};       

        nums[0][0]=5;

        nums[0][1]=6;

        nums[0][2]=7;



        nums[1][0]=5;

        nums[1][1]=6;

        nums[1][2]=7;



        nums[2][0]=5;

        nums[2][1]=6;

        nums[2][2]=7;   

    }   



    @Test

    public void test07(){

        //01.建立二維陣列

        int [][] nums={{1,2,3,4},{4,5,6},{7,8}};



        System.out.println(nums[0]);//{1,2,3}

        System.out.println(nums[0][1]);//2

        System.out.println("nums的長度:"+nums.length);

        System.out.println("第2個數組中下標是2的元素"+nums[1][2]);

    }



    /**

    * 迴圈打印出陣列所有的元素

    */

    @Test

    public void test08(){

        //01.建立二維陣列

        int [][] nums={{1,2,3,4},{4,5,6},{7,8}};

        for (int i = 0; i < nums.length; i++) {  //外層

            System.out.println("這是2維陣列中的第"+(i+1)+"個數組");

            for (int j = 0; j < nums[i].length; j++) {//內層

                System.out.println("元素的值:"+nums[i][j]);

            }

        }     

    }

陣列的詳解具體就是上面這些,大家可以好好練習一下,針對陣列一定要會變通,會寫二維陣列、用陣列實現氣泡排序等等,一定要掌握,重中之重,小編認為這篇陣列講的還算詳細、清晰,希望大家看後可以好好儲存,也可以去小猿圈學習通過視訊,一個免