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

            }

        }     

    }

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容