零度非安全 发表于 2017-1-19 16:16:22

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

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

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

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

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

运行效果如下:



栗子代码如下:

newForUse.java
public class newForUse{
      public static void main(String args[]){
                int[] a = {1,2,3,4};
                char[] b = {'a','b','c','d'};
                for(int n = 0;n < a.length;n++){      //传统方式
                        System.out.println(a);
                }
                for(int n = 0;n < b.length;n++){      //传统方式
                        System.out.println(b);
                }
                for(int i:a){                         //循环变量i依次取数组a的每一个元素的值(改进方式)
                        System.out.println(i);      
                }
                for(char ch:b){                     //循环变量ch依次取数组b的每一个元素的值(改进方式)
                        System.out.println(ch);
                }
      }
}
需要特别注意的是:
for(声明循环变量:数组的名字)
这其中的“声明循环变量”必须是变量声明,不可以使用已经声明过的变量,例如,将上述代码中的第一个改进方式 for 语句不可以分开写成如下两条语句:
int i = 0;
for(i:a){
      System.out.println(i);
}
枚举类型与 for、switch 语句

在第 007 讲已经学过了枚举类型,在这里再简单的回忆下枚举类型,例如下面这段代码:
enum WeekDay{
      sun,mon,tue,wed,thu,fri,sat
}
声明了名字为 WeekDay 的枚举类型,该枚举类型有 7 个常量。

在声明一个枚举类型后,就可以用该枚举类型声明一个枚举变量了。该枚举变量只能取枚举类型中的常量,通过使用枚举名和“ . ”运算符获得枚举类型的常量。例如:
WeekDay day = WeekDay.mon;
枚举类型可以用如下形式:
枚举类型的名字.values();
返回一个数组,该数组元素的值和该枚举类型中的常量依次对应,例如:
WeekDay a[] = WeekDay.values();
那么,a ~ a 的值依次为 sun、mon、tue、wed、thu、fri、sat。

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



栗子代码如下:

sortColor.java
enum Color{
    红,蓝,绿,黄,黑
}

public class sortColor{
    public static void main(String args[]){
      for(Color a:Color.values()){
            for(Color b:Color.values()){
                for(Color c:Color.values()){
                  if(a!=b && a!=c && b!=c){
                        System.out.println(a + "," + b + "," + c + "|");
                  }
                }
            }
      }
    }
}
JDK1.5 以后的版本允许 switch 语句中的表达式的值是枚举类型,下面这个栗子结合 for 语句和 switch 语句显示了 5 种水果中部分水果的价格,其中,for 语句和 switch 语句都使用了枚举类型。

运行效果如下:



栗子代码如下:

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

public class fruitPrice{
    public static void main(String args[]){
      double price = 0;
      boolean show = false;
      for(Fruit fruit:Fruit.values()){
            switch(fruit){
                case 苹果:
                  price = 1.5;
                  show = true;
                  break;
                case 芒果:
                  price = 6.8;
                  show = true;
                  break;
                case 香蕉:
                  price = 2.8;
                  show = true;
                  break;
                default: show = false;
            }
            if(show){
                System.out.println(fruit + "500克的价格:" + price + "元");
            }
      }
    }
}

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


点我前往上一讲
010~015.课后大作业
点我前往下一讲

小小七 发表于 2017-1-20 15:03:15

{:9_228:}继续更新呀,大神。

零度非安全 发表于 2017-1-20 15:09:54

小小七 发表于 2017-1-20 15:03
继续更新呀,大神。

在整理当中,您可以完成前面 3 次大作业,若能独立完成,那就说明前面学的还不错(尤其是动动手),可以为后面打下基础。

suiyisuixin2017 发表于 2018-4-15 21:23:23

谢谢讲解

122815306 发表于 2018-10-16 18:21:42

大神,还会继续更新吗{:10_245:}
页: [1]
查看完整版本: 【Java 教程(原创)】015.数组与 for 以及枚举类型与 for、switch 语句详解