【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.课后大作业
点我前往下一讲
{:9_228:}继续更新呀,大神。 小小七 发表于 2017-1-20 15:03
继续更新呀,大神。
在整理当中,您可以完成前面 3 次大作业,若能独立完成,那就说明前面学的还不错(尤其是动动手),可以为后面打下基础。 谢谢讲解 大神,还会继续更新吗{:10_245:}
页:
[1]