
C语言的枚举类型实质就是整型变量,只不过通过枚举类型将一类有关联的标识组合起来,增加程序的可读性和可维护性
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
定义枚举类型
enum YOURENUMTYPE
{
ID1,//如果不额外指定则第一个标识等于整数0,后续依次加1
ID2,
ID3=7,
IDn//最后一个标识符后面没有逗号
};//注意一定要加上这个分号
定义枚举变量
enum YOURENUMTYPE varname;
给枚举变量赋值 varname = IDx;
举个完整的例子
enum FRUIT
{
APPLE,
PEAR,
ORANGE,
PEACH,
GRAPE,
BANANA
};
enmu FRUIT myfruit = PEACH;
package comljqtest;
/
枚举用法详解
@author jiqinlin
/
public class TestEnum {
/
普通枚举
@author jiqinlin
/
public enum ColorEnum {
red, green, yellow, blue;
}
/
枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
@author jiqinlin
/
public enum SeasonEnum {
//注:枚举写在最前面,否则编译出错
spring, summer, autumn, winter;
private final static String position = "test";
public static SeasonEnum getSeason() {
if ("test"equals(position))
return spring;
else
return winter;
}
}
/
性别
实现带有构造器的枚举
@author jiqinlin
/
public enum Gender{
//通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
//赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
MAN("MAN"), WOMEN("WOMEN");
private final String value;
//构造器默认也只能是private, 从而保证构造函数只能在内部使用
Gender(String value) {
thisvalue = value;
}
public String getValue() {
return value;
}
}
/
订单状态
实现带有抽象方法的枚举
@author jiqinlin
/
public enum OrderState {
/ 已取消 /
CANCEL {public String getName(){return "已取消";}},
/ 待审核 /
WAITCONFIRM {public String getName(){return "待审核";}},
/ 等待付款 /
WAITPAYMENT {public String getName(){return "等待付款";}},
/ 正在配货 /
ADMEASUREPRODUCT {public String getName(){return "正在配货";}},
/ 等待发货 /
WAITDELIVER {public String getName(){return "等待发货";}},
/ 已发货 /
DELIVERED {public String getName(){return "已发货";}},
/ 已收货 /
RECEIVED {public String getName(){return "已收货";}};
public abstract String getName();
}
public static void main(String[] args) {
//枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名值”取得枚举中的值
ColorEnum colorEnum = ColorEnumblue;
switch (colorEnum) {
case red:
Systemoutprintln("color is red");
break;
case green:
Systemoutprintln("color is green");
break;
case yellow:
Systemoutprintln("color is yellow");
break;
case blue:
Systemoutprintln("color is blue");
break;
}
//遍历枚举
Systemoutprintln("遍历ColorEnum枚举中的值");
for(ColorEnum color : ColorEnumvalues()){
Systemoutprintln(color);
}
//获取枚举的个数
Systemoutprintln("ColorEnum枚举中的值有"+ColorEnumvalues()length+"个");
//获取枚举的索引位置,默认从0开始
Systemoutprintln(ColorEnumredordinal());//0
Systemoutprintln(ColorEnumgreenordinal());//1
Systemoutprintln(ColorEnumyellowordinal());//2
Systemoutprintln(ColorEnumblueordinal());//3
//枚举默认实现了javalangComparable接口
Systemoutprintln(ColorEnumredcompareTo(ColorEnumgreen));//-1
//--------------------------
Systemoutprintln("===========");
Systemerrprintln("季节为" + SeasonEnumgetSeason());
//--------------
Systemoutprintln("===========");
for(Gender gender : Gendervalues()){
Systemoutprintln(gendervalue);
}
//--------------
Systemoutprintln("===========");
for(OrderState order : OrderStatevalues()){
Systemoutprintln(ordergetName());
}
}
}
以上就是关于enum在c语言中怎么用全部的内容,包括:enum在c语言中怎么用、java枚举问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)