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

//声明:部分内容引自《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();


    }
}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值