Blogger Information
Blog 75
fans 0
comment 0
visits 55215
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
小猿圈java之数组
聆听的博客
Original
652 people have browsed it

 

基本数据结构中,数组是很重要的,这篇小猿圈加加对数组详解一席,具体使用,在学习过程中有困惑的朋友,可以看一下加加的这篇文章,看到就是赚到,让我们一起看看吧。

一、数组的基本使用

实例

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

            }

        }     

    }

运行实例 »

数组的详解具体就是上面这些,大家可以好好练习一下,针对数组一定要会变通,会写二维数组、用数组实现冒泡排序等等,一定要掌握,重中之重,小编认为这篇数组讲的还算详细、清晰,希望大家看后可以好好保存,也可以去小猿圈学习通过视频,一个免费的学习平台。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post