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博客园,感兴趣的小伙伴可以去看相关的其它博文。 

  • 相关阅读:
    gc buffer busy/gcs log flush sync与log file sync
    给Oracle年轻的初学者的几点建议
    Android 编程下帧动画在 Activity 启动时自动运行的几种方式
    Android 编程下 Touch 事件的分发和消费机制
    Java 编程下 static 关键字
    Java 编程下 final 关键字
    Android 编程下模拟 HOME 键效果
    Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?
    Extjs4 大型项目目录结构重构
    [转]SQLServer 2008 允许远程连接的配置方法
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7446715.html
Copyright © 2011-2022 走看看