《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!!!
  5. 数组一般配合循环使用。

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

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

时间: 2024-10-23 21:38:12

《Java从入门到放弃》JavaSE篇:数组的相关文章

《Java从入门到放弃》文章目录

转眼半个月过去了,不知不觉也写了10篇博客,突然发现所有的目录都没有纯列表的展示,所以特意写一个目录篇,来记录该系列下所有的文章. 当然,因为现在还没有写完,所以先按时间顺序排列,等相关内容都写完后,再按学习顺序来整理. <Java从入门到放弃>入门篇:XMLHttpRequest的基本用法 <Java从入门到放弃>入门篇:Struts2的基本访问方 <Java从入门到放弃>入门篇:Struts2的基本访问方式(二) <Java从入门到放弃>入门篇:Stru

《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)

因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念. 方法的作用:把一系列的代码放在一起,然后再取个别名.之后通过这个别名的调用,就相当于执行了这一系列的代码. 方法的语法:([]中的内容表示是可选的) public 返回值类型 方法名(参数类型 参数名[,参数类型 参数2 ...]){     //代码块     //[return 数据]; } 方法的例子:     public static void main(String[] args) {         loop();

《Java从入门到放弃》JavaSE入门篇:集合

今天来讲讲Java中的集合和常见集合类型的使用. 什么是集合呢? 刚好最近学校里面军训,只听到教官一声喊:"集合!!!"各位小萌新们就屁颠屁颠的跑过来排列整齐了,这就是集合··· Java中的集合也是一样的意思,Java一声喊:"集合!!!",那么我们就把需要放在一起的数据放到一个集合中.有的人会说"数组不就有这个功能么".是的,数组是有这个功能,但集合与数组相比,功能会更多些,而且不同的集合侧重点不一样,具体有哪些优势,我们接下来讲解. 集合与

《Java从入门到放弃》JavaSE入门篇:面向对象语法一(入门版)

前一次简单说明了一下面向对象编程的概念,今天我们就把这些概念通过Java语法来实现,然后看看效果. 来看第一个案例:定义女神类,再根据女神类创建三个女神对象,并使用女神对象的属性和方法. 第一步:定义女神类(因为Java本身没有这个类型,所以我们自己创建这个类型) /**  * 女神类  */ public class Goddess { public String name; //姓名 public int age; //年龄 public double stature; //身高 /**  

《Java从入门到放弃》JavaSE入门篇:单元测试

单元测试其实没什么好说的,直接看操作步骤! 我们来测试前一篇的小明买食物的方法. 第一步:在小明类上点右键,然后再new一个JUnit Test Case 第二步:继续点下一步,图上的内容相信大家都看得懂吧,如果看不懂···,那就要么学习,要么放弃吧,哈哈! 第三步:勾选要测试的方法: 第四步:点击OK,导入使用JUnit需要使用的Jar包 第五步:自动生成了一个xxxTest的类,里面包含一个testxxx的方法,上面有一个@test注解,因为我们没有勾选初始化的方法,所以所有的代码都直接写在

《Java从入门到放弃》JavaSE入门篇:异常

异常!!!看看生活中的异常例子: 正常情况下,从家到公司上班,只需要20分钟!但如果在路上碰到堵车或修路或车突然自燃等问题,那就没办法正常去上班了.其中堵车或修路或车突然自燃等问题就属于异常. 碰到异常,就需要处理,不然就只能中断上班了. 在Java程序中的异常表示什么意思呢? Java中的错误分为两类:错误(Error)和异常(Exception) 错误一般都是在编译前IDE就能发现并提示,例如非要给整型变量赋一个超大的数值: 这就是一个典型的Error. 程序在运行时出现的问题,就叫异常!!

《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)

想了半天,发现单独的封装和多态没什么好讲的,我们就简单说说Java里面对应的语法吧. 相关内容如下: 一.访问修饰符 二.getter/setter方法 三.构造方法 四.super和this 五.static关键字 六.final关键字 七.方法重写 八.抽象类和接口 一.访问修饰符 Java当中有四种情况,按其访问范围的顺序由小到大分别是: priate(私有)---->default(默认)---->protected(受保护)---->public(公共) 访问范围可以看下图:

《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

今天,我们要玩个大的!!! 我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想.如果有不知道这个系统的看官,请跳转到目录页,然后再选择单身狗系统(数组版)先围观五分钟吧.里面的功能很简单......... 五分钟之后··· 好了,五分钟到了,我们继续吧· 要完成的功能还是如上图所示,只不过实现的代码有翻天覆地的变化而已... 第一步:分析 一般做一个项目,根据侧重点不同,会把整个项目分成三大部分:界面.功能业务实现.数据库操作.具体三层架构的内容,等后面JS

《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)

要知道什么是面向对象,你首先要有个对象吧,所以······没有对象的可以回家洗洗睡了· 好吧,前面是开玩笑,要说明什么是面向对象,我们还是先 例子: 小呆:"小傻,你今天早餐吃的什么?" 小傻:"吃的东西可多啦,有两片面包,一块鸡肉饼,几片菜叶子,一点沙拉酱,另外还喝了一杯可乐,一袋油炸土豆条" 小呆:"小傻,你四不四洒啊!你直接说你吃的鸡肉堡套餐不行么 - -" 小傻:"呃,好吧,我吃的这个鸡肉汉堡套餐" OK,从上面的例子