ENUM类型
1.今天在练习的时候遇到一个差点绕不出来的enum类型问题。可能是底子较薄吧。汗!
先看代码:
定义:
package com.tree.www;
/**
* 定义货币最小类型的6种面值
*/
public enum Money {
BAIYUAN,YUAN,JIAO,FEN,LI;
}
接着是利用switch进行判断并打印枚举名称:
package com.tree.www;
/**
* 利用switch对Money进行判断并输出货币描述
* @author Tree
*/
public class SwitchMoneyEnum {
Money money; //枚举也可以看成是对象类型,这样声明出来的money实际上是一个对象。
public SwitchMoneyEnum(Money money){
this.money=money;
}//这里对money对象进行实例化
public void switchMoney(){
System.out.println(money);
switch (money){ //这里的money是Money类型的一个实例化后的拥有一个值的Money对象
case FEN:
System.out.println("这是分");
break;
case YUAN:
System.out.println("这是元");
break;
case JIAO:
System.out.println("这是角");
break;
case LI:
System.out.println("这是厘");
break;
}
}
public static void main(String[] args) {
SwitchMoneyEnum yuan=new SwitchMoneyEnum(Money.FEN),
fen=new SwitchMoneyEnum(Money.BAIYUAN),
li=new SwitchMoneyEnum(Money.LI),
jiao=new SwitchMoneyEnum(Money.JIAO);
yuan.switchMoney();
li.switchMoney();
jiao.switchMoney();
}
}
明明可以用Money.FEN /Money.YUAN …进行直接调用,这里却用了方法或者类型的思路去进行进行理解枚举类型。
package com.tree.www;
/**
* 利用values打印money种的所有面值以及ordinal();
* @aurhot Tree
*/
public class MoneyOrder {
public static void main(String[] args) {
for(Money m:Money.values())
System.out.println(m+":"+m.ordinal());
System.out.println(Money.FEN.ordinal());
}
}
//所以枚举还可以理解为一个简单的集合,可以利用foreach结构进行遍历
//ordinal()方法记录了当前枚举在声明时的次序