您的位置:首页 > 编程语言 > Java开发

Thinking in Java 第5章 初始化与清理 【枚举类型】

2016-07-04 09:27 681 查看
//声明:部分内容引自《Java编程思想(第四版)》机械工业出版社

枚举类型,关键字 enum

– 枚举类型的实例是常量,按命名习惯它们都用大写字母表示,如果在一个名字中有多个单词,用下划线将它们隔开。

例:

package initialization;//: initialization/Spiciness.java

public enum Spiciness {
NOT, MILD, MEDIUM, HOT, FLAMING
} ///:~


– 创建 enum 时,编译器会自动添加一些有用的特性。

例:

package initialization;//: initialization/EnumOrder.java

public class EnumOrder {
public static void main(String[] args) {
for(Spiciness s : Spiciness.values())
System.out.println(s + ", ordinal " + s.ordinal());
}
}




– enum 是一种类,具有自己的方法。

– enum 可以在 switch 语句中使用。

例:

package initialization;//: initialization/Burrito.java

public class Burrito {
Spiciness degree;
public Burrito(Spiciness degree) { this.degree = degree;}
public void describe() {
System.out.print("This burrito is ");
switch(degree) {
case NOT:    System.out.println("not spicy at all.");
break;
case MILD:
case MEDIUM: System.out.println("a little hot.");
break;
case HOT:
case FLAMING:
default:     System.out.println("maybe too hot.");
}
}
public static void main(String[] args) {
Burrito
plain = new Burrito(Spiciness.NOT),
greenChile = new Burrito(Spiciness.MEDIUM),
jalapeno = new Burrito(Spiciness.HOT);
plain.describe();
greenChile.describe();
jalapeno.describe();
}
}




练习 21

创建一个 enum,它包含纸币中最小面值的 6 种类型。通过 values() 循环并打印每一个值及其 ordinal()。

package JT_practice;

/**
* Created by JT on 2016/7/4.
*/
enum Money {
ONE, TWO, FIVE, TEN, TWENTY, FIFTY, ONE_HUNDRED;
}
public class practice_21 {
public static void main(String[] args){
for(Money m : Money.values())
System.out.println(m + ".ordinal " + m.ordinal()); // ordinal(): 求序数
}
}


练习 22

在前面的例子中,为 enum 写一个 switch 语句,对于每一个 case,输出该特定货币的描述。

package JT_practice;

/**
* Created by JT on 2016/7/4.
*/
enum Money {
ONE, TWO, FIVE, TEN, TWENTY, FIFTY, ONE_HUNDRED;
}
public class Practice_22 {
Money money;
public Practice_22(Money money){
this.money = money;
}
public void describe(){
System.out.print("This money is ");
switch (money){
case ONE:  System.out.println("¥1");
break;
case TWO:  System.out.println("¥2");
break;
case FIVE:  System.out.println("¥5");
break;
case TEN:  System.out.println("¥10");
break;
case TWENTY:  System.out.println("¥20");
break;
case FIFTY:  System.out.println("¥50");
break;
case ONE_HUNDRED:  System.out.println("¥100");
break;
default: System.out.println("Something is wrong!");
}
}
public static void main(String[] args){

Practice_22 money1 = new Practice_22(Money.ONE);
Practice_22 money2 = new Practice_22(Money.TWO);
Practice_22 money5 = new Practice_22(Money.FIVE);
Practice_22 money10 = new Practice_22(Money.TEN);
Practice_22 money20 = new Practice_22(Money.TWENTY);
Practice_22 money50 = new Practice_22(Money.FIFTY);
Practice_22 money100 = new Practice_22(Money.ONE_HUNDRED);

money1.describe();
money2.describe();
money5.describe();
money10.describe();
money20.describe();
money50.describe();
money100.describe();

}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息