《Java从入门到放弃》JavaSE入门篇:数组

数组,就是一组数!!!

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

String name1;

String name2;

......

......

String name49;

String name50;

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

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

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

    }

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

    }

    ......

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

    }

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

    }

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

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

    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]表示下标(也叫偏移量)。因为数组在内存是一块连续的内存空间,所以它是这样滴

,names默认指向第一个数据,所以它偏移0个位置就是第一个数据,偏移1个位置就是第二个数据。所以最后一个数据的下标是——49!!!

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

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

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

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

一、数组元素的遍历

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

二、数组的排序

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

结果:

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

    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名员工,那需要这样定义数组:

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

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

//外层遍历部门数
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个整数存入一个数组,然后按从小到大的顺序排序,并输出

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和PYTHON有个约会

26. 企业级开发基础7:面向对象特征(多态)

多态是让我们的程序在运行的过程中,在不同的状态下进行动态的切换,实现复杂的功能为目的的一种程序开发手段

601
来自专栏GreenLeaves

JavaScript之apply()和call()的区别

我 在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示 例,总算是看...

1927
来自专栏deepcc

Js apply() call()使用详解

3356
来自专栏Linux Python 加油站

Python基础之set应用详解

一个{ }里面放一些元素就构成了一个集合,set里面可以是多种数据类型(但不能是列表,集合,字典,可以是元组)

1655
来自专栏从流域到海域

《Java程序设计基础》 第6章手记

本章主要内容: - 类的定义 - 成员变量和成员方法 - 类及成员的修饰符 - 对象的创建与使用 - 成员变量的访问与方法的...

1855
来自专栏小古哥的博客园

秒懂JS对象、构造器函数和原型对象之间的关系

学习JS的过程中,想要掌握面向对象的程序设计风格,对象模型(原型和继承)是其中的重点和难点,拜读了各类经典书籍和各位前辈的技术文章,感觉都太过高深,花费了不少时...

2837
来自专栏ACM算法日常

基础算法系列之排序算法-3. 直接插入排序

我们之前已经学习了冒泡排序和二分查找两种基本算法,本篇文章我们将一起学习下一个基础算法——直接插入排序算法。

1442
来自专栏数据之美

浅谈 Scala 中下划线的用途

Scala 作为一门函数式编程语言,对习惯了指令式编程语言的同学来说,会不大习惯,这里除了思维方式之外,还有语法层面的,比如 underscore(下划线)就会...

18410
来自专栏云霄雨霁

排序----归并排序

1400
来自专栏令仔很忙

新手学JAVA(六)----处理随机性的数据

在我们的日常生活中会遇到很多随机性的事情,比如:摇奖,彩票,掷色子,这些都可以通过程序计算其中奖的概率。在JAVA的类库中,有一个专门操作这种随机性数据的类—-...

712

扫码关注云+社区