zoukankan      html  css  js  c++  java
  • 《Java从入门到放弃》JavaSE篇:数组

    数组,就是一组数!!!

    之前我们学习的变量只能保存一个数据,如果一个部门有50个员工的姓名要保存,怎么办?如果定义50个变量··················

    String name1;

    String name2;

    ......

    ......

    String name49;

    String name50;

    ,这画面太美,我不敢看...j_0004.gif

    就算你保存下来了,现在我要找一个叫“罗大锤”的员工,那代码怎么写呢?

        if(name1.equals("罗大锤")){

        }

        if(name2.equals("罗大锤")){

        }

        ......

        if(name49.equals("罗大锤")){

        }

        if(name50.equals("罗大锤")){

        }

    ,这代码更美,看得要咽口水...j_0008.gif

     

    这时,数组出现了!!!他身披金甲圣衣,脚踏七彩祥云.....,好吧,不废话了,直接上代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        public static void main(String[] args) {
            //定义保存50个员工姓名的
            String[] names = new String[50];
            //2.赋值
            names[0] = "张小萌"
            names[10] = "李二爷";
            names[20] = "罗大锤";
            //3.查找是否有员工叫罗大锤
            for (int i = 0; i < names.length; i++) {
                if(names[i]!=null && names[i].equals("罗大锤")){
                    System.out.println("找到罗大锤了,他的编号是"+i);
                    break;
                }
            }
        }

    注意:

    1. 数组的好处是解决了相同类型变量的存储问题。

    2. 定义数组与定义普通变量相比,多了一对[],并且数组的默认值,数值类型的值为0,引用类型的值为null。

    3. 后面new String[50],表示数组可以存储数据的个数,如果在使用时超过了范围则报错。

    4. 赋值是names[0] = "xxx";,这儿的[0]表示下标(也叫偏移量)。因为数组在内存是一块连续的内存空间,所以它是这样滴wKioL1mj3KTT2CiEAAAE8HJEd9U469.png,names默认指向第一个数据,所以它偏移0个位置就是第一个数据,偏移1个位置就是第二个数据。所以最后一个数据的下标是——49!!!

    5. 数组一般配合循环使用。

    OK,数组就这样了,多简单个东西啊!!!当然,他还有很多细节的语法,比如定义时这样写才是正确的:

    1
    2
    3
    String[] names = new String[50];
    String[] names2 = {"aaaa","bbb","ccc"};
    String[] names3 = new String[]{"aaaa","bbb","ccc"};

    最后最后最后,数组的几个常用操作:

    一、数组元素的遍历

    1
    2
    3
    4
    5
    6
    7
    8
        public static void main(String[] args) {
            //定义数组并赋初值
            int[] nums = {234,64,13,2,7,6,4,334,34};
            //遍历数组,length表示数组的元素个数
            for (int i = 0; i < nums.length; i++) {
                System.out.println("第"+(i+1)+"个元素的值为:"+nums[i]);
            }
        }

    二、数组的排序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        public static void main(String[] args) {
            //定义数组并赋初值
            int[] nums = {234,64,13,2,7,6,4,334,34};
            //遍历数组
            for (int i = 0; i < nums.length; i++) {
                System.out.println("第"+(i+1)+"个元素的值为:"+nums[i]);
            }
            //数组排序
            Arrays.sort(nums);
            System.out.println("排序后的结果:");
            //遍历数组
            for (int i = 0; i < nums.length; i++) {
                System.out.println("第"+(i+1)+"个元素的值为:"+nums[i]);
            }
        }

    结果:

    wKioL1mj3znBApwrAABDDvKpujI147.png

    如果要降序排列的话,我们还可以自己写代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
        public static void main(String[] args) {
            //定义数组并赋初值
            int[] nums = {234,64,13,2,7,6,4,334,34};
            //遍历数组
            for (int i = 0; i < nums.length; i++) {
                System.out.println("第"+(i+1)+"个元素的值为:"+nums[i]);
            }
            //数组排序
            for (int i = 0; i < nums.length; i++) {
                for (int j = i+1; j < nums.length; j++) {
                    if(nums[i]<nums[j]){
                        int tmp = nums[i];
                        nums[i] = nums[j];
                        nums[j] = tmp;
                    }
                }
            }
            System.out.println("排序后的结果:");
            //遍历数组
            for (int i = 0; i < nums.length; i++) {
                System.out.println("第"+(i+1)+"个元素的值为:"+nums[i]);
            }
        }

    三、二维数组

    前面所学的都是一维数组,比如保存一个部门的50名员工,就可以使用一维数组,如果公司有4个部门,人数最多的部门有50名员工,那需要这样定义数组:

    1
    String[][] names = new String[4][50];

    并且现在要使用嵌套的循环来进行遍历了:

    1
    2
    3
    4
    5
    6
    7
    //外层遍历部门数
    for (int i = 0; i < names.length; i++) {
        //里层遍历每个部门的员工数
        for (int j = 0; j < names[i].length; j++) {
            System.out.println("这是部门"+(i+1)+"中的员工第"+(j+1)+"个员工");
        }
    }

    到这儿,数组是真滴结束了,老规矩,布置几个练习吧:

    1. 输入一个字符串,分别统计出其中英文大写字母、小写字母、数字以及其它字符的个数

    2. 输入10个员工的薪水,求平均薪水和总薪水分别是多少,并统计5000以下有多少人,5000及以上的有多少人

    3. 已有一个已排好序的数组{23,34,55,87,108,210},现在输入一个数,要求按原来排序的规律将它插入到数组中

    4. 随机输入5个整数存入一个数组,然后按从小到大的顺序排序,并输出

     “软件思维”博客地址:51CTO博客园,感兴趣的小伙伴可以去看相关的其它博文。 

  • 相关阅读:
    PHP递归方法实现前序、中序、后序遍历二叉树
    php循环方法实现先序、中序、后序遍历二叉树
    Mac charles 抓取https请求,安装证书后还是显示unknown
    PHP工厂模式
    PHP策略模式2
    PHP单例模式
    PHP 面试知识点整理归纳
    十大迷你iPhone天气应用
    来自极客标签10款最新设计素材-系列十三
    帮助快速生成页面固定显示元素的jQuery插件
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7446715.html
Copyright © 2011-2022 走看看