QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
2282
查看: 949|回复: 3

[系列教程] 【Java 教程(原创)】015.数组与 for 以及枚举类型与 for、switch 语句详解

[复制链接]
最佳答案
42 
累计签到:953 天
连续签到:1 天
零度非安全 发表于 2017-1-19 16:16:22 9493 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 零度非安全 于 2017-1-21 16:51 编辑

【Java 教程(原创)】索引帖

JDK 1.5 版本对 for 语句的功能给予扩充、增强,以便更好地遍历数组。其语法格式如下:
  1. for(声明循环变量:数组的名字){
  2.         .
  3.         .
  4.         .
  5. }
复制代码
其中,声明的循环变量的类型必须和数组的类型相同,切记

这种形式的 for 语句类似自然语言中的 for each 语句,为了便于理解上述 for 语句,可以将这种形式的 for 语句翻译成“对于循环变量依次取数组的每一个元素的值”。
下面这个例子分别使用 for 语句的传统方式和改进方式遍历数组,让我们先尝个鲜,go go go!

运行效果如下:

newForUse.gif

栗子代码如下:

newForUse.java
  1. public class newForUse{
  2.         public static void main(String args[]){
  3.                 int[] a = {1,2,3,4};
  4.                 char[] b = {'a','b','c','d'};
  5.                 for(int n = 0;n < a.length;n++){      //传统方式
  6.                         System.out.println(a[n]);
  7.                 }
  8.                 for(int n = 0;n < b.length;n++){      //传统方式
  9.                         System.out.println(b[n]);
  10.                 }
  11.                 for(int i:a){                         //循环变量i依次取数组a的每一个元素的值(改进方式)
  12.                         System.out.println(i);        
  13.                 }
  14.                 for(char ch:b){                       //循环变量ch依次取数组b的每一个元素的值(改进方式)
  15.                         System.out.println(ch);
  16.                 }
  17.         }
  18. }
复制代码

需要特别注意的是:
  1. for(声明循环变量:数组的名字)
复制代码

这其中的“声明循环变量”必须是变量声明,不可以使用已经声明过的变量,例如,将上述代码中的第一个改进方式 for 语句不可以分开写成如下两条语句:
  1. int i = 0;
  2. for(i:a){
  3.         System.out.println(i);
  4. }
复制代码

枚举类型与 for、switch 语句

在第 007 讲已经学过了枚举类型,在这里再简单的回忆下枚举类型,例如下面这段代码:
  1. enum WeekDay{
  2.         sun,mon,tue,wed,thu,fri,sat
  3. }
复制代码

声明了名字为 WeekDay 的枚举类型,该枚举类型有 7 个常量。

在声明一个枚举类型后,就可以用该枚举类型声明一个枚举变量了。该枚举变量只能取枚举类型中的常量,通过使用枚举名和“ . ”运算符获得枚举类型的常量。例如:
  1. WeekDay day = WeekDay.mon;
复制代码

枚举类型可以用如下形式:
  1. 枚举类型的名字.values();
复制代码

返回一个数组,该数组元素的值和该枚举类型中的常量依次对应,例如:
  1. WeekDay a[] = WeekDay.values();
复制代码

那么,a[0] ~ a[6] 的值依次为 sun、mon、tue、wed、thu、fri、sat

JDK1.5 之后的版本可以使用 for 语句遍历枚举类型中的常量。在下面这个栗子中,输出从红、蓝、绿、黄、黑颜色取出 3 种不同颜色的排列(不是组合),运行效果如下:

sortColor.gif

栗子代码如下:

sortColor.java

  1. enum Color{
  2.     红,蓝,绿,黄,黑
  3. }

  4. public class sortColor{
  5.     public static void main(String args[]){
  6.         for(Color a:Color.values()){
  7.             for(Color b:Color.values()){
  8.                 for(Color c:Color.values()){
  9.                     if(a!=b && a!=c && b!=c){
  10.                         System.out.println(a + "," + b + "," + c + "|");
  11.                     }
  12.                 }
  13.             }
  14.         }
  15.     }
  16. }
复制代码

JDK1.5 以后的版本允许 switch 语句中的表达式的值是枚举类型,下面这个栗子结合 for 语句和 switch 语句显示了 5 种水果中部分水果的价格,其中,for 语句和 switch 语句都使用了枚举类型。

运行效果如下:

fruitPrice.gif

栗子代码如下:

fruitPrice.java
  1. enum Fruit{
  2.     苹果,梨,香蕉,西瓜,芒果
  3. }

  4. public class fruitPrice{
  5.     public static void main(String args[]){
  6.         double price = 0;
  7.         boolean show = false;
  8.         for(Fruit fruit:Fruit.values()){
  9.             switch(fruit){
  10.                 case 苹果:
  11.                     price = 1.5;
  12.                     show = true;
  13.                     break;
  14.                 case 芒果:
  15.                     price = 6.8;
  16.                     show = true;
  17.                     break;
  18.                 case 香蕉:
  19.                     price = 2.8;
  20.                     show = true;
  21.                     break;
  22.                 default: show = false;
  23.             }
  24.             if(show){
  25.                 System.out.println(fruit + "500克的价格:" + price + "元");
  26.             }
  27.         }
  28.     }
  29. }
复制代码


【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。



评分

参与人数 1鱼币 +5 收起 理由
alltolove + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层
最佳答案
0 
累计签到:11 天
连续签到:1 天
小小七 发表于 2017-1-20 15:03:15 | 显示全部楼层
继续更新呀,大神。
最佳答案
42 
累计签到:953 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-1-20 15:09:54 | 显示全部楼层
小小七 发表于 2017-1-20 15:03
继续更新呀,大神。

在整理当中,您可以完成前面 3 次大作业,若能独立完成,那就说明前面学的还不错(尤其是动动手),可以为后面打下基础。
最佳答案
0 
累计签到:14 天
连续签到:1 天
suiyisuixin2017 发表于 2018-4-15 21:23:23 | 显示全部楼层
谢谢讲解

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-27 16:44

快速回复 返回顶部 返回列表