小猿圈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]);

            }

        }     

    }

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值