鱼C论坛

 找回密码
 立即注册
查看: 5630|回复: 4

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

[复制链接]
发表于 2017-1-19 16:16:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

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

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

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

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

运行效果如下:

newForUse.gif

栗子代码如下:

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[n]);
                }
                for(int n = 0;n < b.length;n++){      //传统方式
                        System.out.println(b[n]);
                }
                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[0] ~ a[6] 的值依次为 sun、mon、tue、wed、thu、fri、sat

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

sortColor.gif

栗子代码如下:

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.gif

栗子代码如下:

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 + "元");
            }
        }
    }
}

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



评分

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

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-20 15:03:15 | 显示全部楼层
继续更新呀,大神。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-20 15:09:54 | 显示全部楼层
小小七 发表于 2017-1-20 15:03
继续更新呀,大神。

在整理当中,您可以完成前面 3 次大作业,若能独立完成,那就说明前面学的还不错(尤其是动动手),可以为后面打下基础。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-15 21:23:23 | 显示全部楼层
谢谢讲解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-16 18:21:42 | 显示全部楼层
大神,还会继续更新吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 22:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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