//enum是枚举类类型,可以这样看 enum=:every每个+num:number数
//为枚举类型的对象赋一个事例(即 枚举类型名 枚举对象名=枚举类型名.内部常量名)
//枚举类型规定了枚举对象的取值范围,在定义枚举类型时,{}中每个名字为枚举类型对象的取值
//所以规范写的话,应该把里面的变量名写成大写的,因为他们实际上是一个int常量。如果他们的名字由多个单词组成,则可以用_隔开
//在定义枚举类型时,编译器自动为内部的名字创建了toString()
//在定义枚举类型时,编译器自动为enum类型创建了values(),这个方法是生成一个由内部常量名字组成的数组,且其顺序按照常量的定义顺序。
//在定义枚举类型时,编译器自动创建了ordinal(),ordinal()方法会显示这个实例的int常量值
// [注:ordinal的汉语意思为:次序]
enum Day
{
ZHOU1,ZHOU2,ZHOU3,ZHOU4,ZHOU5;
}
public class Hello
{
public static void main(String[] args)
{
Day today=Day.ZHOU1;
System.out.println(today);//在定义枚举类型时,编译器自动创建了toString功能,这就是这段代码打印出ZHOU5的原因。
for (Day d: Day.values())
{
System.out.println("名字为:"+d);//可以看出枚举类型对象的值为常量的名字
System.out.println("值为:"+d.ordinal());//【枚举类型对象=内部常量名】.ordinal()才是常量的实际int值
}
System.out.println(Day.ZHOU2.ordinal());
}
}
输出:
//其实enum也是类,但是为什么用关键字enum定义而不用class?那是要为他定义一些自动的方法
//因为enum是类,所以也可以在他内部定义个方法,这个在以后会学。
//enum与switch百搭:因为他们都要求取值是一定的,是有范围的。
enum Day
{
ZHOU1,ZHOU2,ZHOU3,ZHOU4,ZHOU5,ZHOU6,ZHOU7;
}
class Test
{
Day d;
public Test(Day d)
{
this.d=d;
}
void what_day()
{
switch(d)
{
case ZHOU1:
System.out.println("今天是周一");
break;
case ZHOU2:
System.out.println("今天是周一");
break;
case ZHOU3:
case ZHOU4:
System.out.println("今天是周三或周四");
break;
case ZHOU5:
System.out.println("今天是周五");
break;
default:
System.out.println("今天不上班");
}
}
}
public class Hello
{
public static void main(String[] args)
{
Test t1=new Test(Day.ZHOU1);
Test t3=new Test(Day.ZHOU3);
Test t5=new Test(Day.ZHOU5);
Test t6=new Test(Day.ZHOU6);
t1.what_day();
t3.what_day();
t5.what_day();
t6.what_day();
}
}
输出:
这里写代码片//题目要求:创建一个enum,它包含纸币中最小面值的6中种类型。通过values()循环并打印每一个值及其ordinal()
//为enum写一个switch语句,对每一个case,输出该特定货币的描述。
//System.out.println()
enum money
{
YI_MAO,WU_MAO,YI_YUAN,WU_YUAN,SHI_YUAN,ER_SHI_YUAN;
}
public class Hello
{
static public void how_much(money m)
{
switch(m)
{
case YI_MAO:
case WU_MAO:
System.out.println("一块钱都不给我!");
break;
case YI_YUAN:
System.out.println("可以坐公交车");
break;
case WU_YUAN:
System.out.println("可以坐地铁");
break;
case SHI_YUAN:
System.out.println("可以打的");
break;
default:
case ER_SHI_YUAN:
System.out.println("可以坐战斗机");
}
}
public static void main(String[] args)
{
for(money m:money.values())
{
System.out.println("钱为:"+m+"int值为"+m.ordinal());
}
how_much(money.YI_MAO);
how_much(money.WU_MAO);
how_much(money.YI_YUAN);
how_much(money.WU_YUAN);
how_much(money.SHI_YUAN);
how_much(money.ER_SHI_YUAN);
}
}
输出: