文档章节

小猿圈java之数组

小猿圈加加
 小猿圈加加
发布于 07/17 14:08
字数 1902
阅读 6
收藏 0

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

一、数组的基本使用

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

            }

        }     

    }

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

© 著作权归作者所有

小猿圈加加
粉丝 1
博文 99
码字总数 75141
作品 0
海淀
私信 提问
Java 8来了!!! 极客学院推出中国第1个Java8课程,详解Lambda 表达式

3月发布的Java 8有哪十大新特性,你知道不? 不知道?没关系,因为没几个家伙知道。不过看到这条消息的你将非常幸运:极客学院推出中国第1个Java 8课程,详细讲解最核心的Lambda 表达式使用方...

jikexueyuan
2014/04/09
34
0
Java 8来了!!! 极客学院推出中国第1个Java8课程,详解Lambda 表达式

3月发布的Java 8有哪十大新特性,你知道不? 不知道?没关系,因为没几个家伙知道。不过看到这条消息的你将非常幸运:极客学院推出中国第1个Java 8课程,详细讲解最核心的Lambda 表达式使用方...

jikexueyuan
2014/04/09
488
0
Java长存!12个Java长久占居主要地位的原因

我们很容易就会遗忘那些曾经在猿群中大热而又被各种新技术掩盖直至堙灭的技术的价值。就拿COBOL这个老猿们当年所用的神器来说,就跟条死鱼一样被现代猿基本这么形容:没价值,腥臭,过时了,...

NealFeng
2013/10/22
11.8K
108
给你这些,让你拥有半个互联网技术圈!

IT行业技术变更周期越来越快,作为技术人最重要的是持续学习,现在的学习途径有很多,我们到底该如何做出选择?我觉得最重要有两方面:第一,需要保持良好的技术视野,持续关注行业内技术新动...

bntx2jsqfehy7
2018/04/13
0
0
论Java程序猿的自我价值提升,BATJ资深架构体系助你飞跃瓶颈区!

Java那句广为人知的口号“一次编写,处处运行”也体现出Java价值的关键所在—强大的Java虚拟机使得Java具有跨平台兼容性。 目前流行的Java职业路径包括后端开发员、大数据开发员,嵌入式系统...

Java填坑之路
2018/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
7分钟前
0
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
737
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
26
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
79
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部