c enum能像java一样吗_Java入门之14------枚举,和C#中的枚举有点不同!

@java5之前没有枚举,用类实现限定值方法和枚举:

a65a66ebc1b1351b6427a32d6b351b08.png

@枚举类具有如下特性:

1,枚举类也是一种特殊形式的Java类。

2,枚举类中声明的每一个枚举值代表枚举类的一个实例对象(例如下边实例中的ABCDE都是实例对象)。

3,与java中的普通类一样,在声明枚举类时,也可以声明属性,方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解,看上图中的第一个类,如果能实例化新的对象,那就不叫枚举了)。

4,枚举类也可以实现接口,或继承抽象类。

5,jdk5中扩展switch语句,它除了可以接收int,byte,char,short外,还可以接收一个枚举类型。

6,若枚举类只有一个枚举值,则可以当做单态设计模式使用(单例模式)。

//用单态设计模式定义出了一个类

enum A{

A;

}

@实例应用:枚举的构造函数,方法和字段。枚举的常用方法。

public class Demo_enum {

@Test

public void test(){

System.out.println(Grade.B.getValue()); //这里输出89-80

}

}

//测试枚举的常用方法

@Test

public void test2(){

//下边是枚举Enum类的常用方法

System.out.println(Grade.C.name());  //输出枚举对象的名称,这里输出C

System.out.println(Grade.C.ordinal());  //输出枚举对象所在的位置,索引号

Grade gs[]=Grade.values();    //获取枚举的所有对象,返回一个数组

for(Grade gde:gs){      //遍历数组,输出枚举对象

System.out.println(gde);

}

String str="Y";

Grade g=Grade.valueOf(str);  //valueOf方法是将字符串转换为枚举对象。注意字符串必须是枚举对象中有的值

//上边是将Y转换为枚举对象,但是Grade枚举中没有Y这个值,所以转换会报错(抛出异常)。

//什么时候会用到将字符串转换为枚举对象?客户提交表单时,表单提交一般都是字符串,例如男女验证,这里就可以将男女转换为指定枚举对象,如果转换失败,就说明客户提交的资料有问题。

System.out.println(g);

}

enum Grade{

//    A,B,C,D,E;  //这里这么定义,上边输出C

//也可以向下边定义枚举的构造方法和值

//A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0"); //new5个Grade对象,有点像字典,一个key对应一个value

//下边是带抽象方法的枚举

A("100-90"){

public String localeValue(){    //这个方法,返回分数的优良等情况

return "优";

}

},

B("89-80"){

public String localeValue(){

return "良";

}

},

C("79-70"){

public String localeValue(){

return "一般";

}

},

D("69-60"){

public String localeValue(){

return "差";

}

},

E("59-0"){

public String localeValue(){

return "不及格";

}

};

private String value;

private Grade(String value){  //构造方法,上边new ABCDE对象时,传入字符串值,赋值给this.value

this.value=value;

}

public String getValue(){    //获取指定对象的value值,这里是返回分数

return this.value;

}

public abstract String localeValue();  //抽象方法,声明这个抽象方法,上边实例化对象时,就必须实现该抽象方法

}

@课后练习题:

请编写一个关于星期几的枚举WeekDay,要求:该枚举要有一个方法,调用该方法返回中文格式的星期。

---答案如下:

enum WeekDay{

MON("星期一"),TUE("星期二"),WED("星期三"),THU("星期四"),FEI("星期五"),SAT("星期六"),SUN("星期日");

private String value;

private WeekDay(String value){

this.value=value;

}

public String getValue(){

return value;

}

}

@Test

public void test3(){

System.out.println(WeekDay.MON.getValue());  //返回星期一

}

@总结:

1,枚举的定义,原理和特性。

2,枚举的常用方法和实例应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值