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

本文深入浅出地介绍了数组的概念及其在编程中的应用。从数组的基本定义出发,详细讲解了一维数组和二维数组的创建、赋值、遍历及排序等操作,并通过实例演示如何解决实际问题。

数组,就是一组数!!!

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

String name1;

String name2;

......

......

String name49;

String name50;

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

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

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

    }

 

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

    }

    ......

 

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

    }

 

 

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

    }

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

 

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

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

结果:

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

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

转载于:https://www.cnblogs.com/xlcker/p/7514494.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值