3——of C++枚举

C++枚举类型

总结一下C++里面的枚举类就是为了方便字符表示数据的一种方式吧,java枚举类也差不多
默认情况下,一个枚举变量没赋值的话则编译器赋为0,后面一次加1
枚举类型默认为int类型,也可以赋值其他数字类型
枚举的取值范围就不太纠结,感觉没啥用;枚举和switch配合,很棒

enum example {   //声明example为新的数据类型,称为枚举(enumeration);
 Aa, Bb, Cc   //声明Aa, Bb, Cc等为符号常量,通常称之为枚举量,其值默认分别为0,1,2
};
enum example {
 Aa = 1, Bb, Cc = 1,Dd, Ee //1 2 1 2 3 未被初始化的枚举值的值默认将比其前面的枚举值大1。
};
enum example : unsigned char //将类型指定成unsigned char,枚举变量变成了8位整型,减少内存使用。
{
 Aa, Bb = 10, Cc
};
enum example : float  //ERROR!枚举量必须是一个整数,float不是整数(double也不行)。
{
 Aa, Bb = 10, Cc
};
Dd = Bb; //ok
Dd = Cc; //ok
Dd = 5; //Error!因为5不是枚举量
int a = Aa; //ok.枚举量是符号常量,赋值时编译器会自动把枚举量转换为int类型。

Aa++;          //非法!
Dd = Aa + Cc   //非法!
int a = 1 + Aa //Ok,编译器会自动把枚举量转换为int类型。
Dd = example(2);
//等同于
Dd = Cc
//若试图将一个超出枚举取值范围的值通过强制转换赋给枚举变量
Dd = example(10); //结果将是不确定的,这么做不会出错,但得不到想要的结果
enum enumType{
    Step0, Step1, Step2
}Step=Step0;      //注意这里在声明枚举的时候直接定义了枚举变量Step,并初始化为Step0 

switch (Step)

{

case Step0:{…;break;}

case Step1:{…;break;}

case Step2:{…;break;}

default:break;

}

java枚举类

java枚举类似乎提供了更多的功能特性,甚至还可以重写compareTo()方法来实现特殊的枚举对象的比较
但似乎项目工程里面很多时候都把枚举类当作是,“多属性值”的“静态常量”

public enum ProjectNodeCodeEnum {

    APPLICATION_ACCEPTANCE("1001" , "申请受理"),//确认受理后
    FORMAL_ACCEPTANCE("1002" , "正式评估"),//发起评审时 进行中, 专家流程结束回调
    SUBMIT_CNIO("1003" , "报送国家网信办"),//专家流程结束回调时 进行中, 报送国家网信办 已通过
    APPROVED_BY_CNIO("1004" , "国家网信办审批");//报送国家网信办时 进行中 , 国家网信办流程结束回调
    ProjectNodeCodeEnum(String code , String name) {
        this.code = code;
        this.name = name;
    }
    private final String code;


    private final String name;


    public String getCode() {
        return code;
    }

    public String getName() {
        return name;
    }
}

可以转去看之前的一篇笔记...

posted @ 2023-10-19 21:56  JayerListen  阅读(7)  评论(0编辑  收藏  举报