枚举Enmu

 - 枚举类是一种特殊的类,单是和普通的类一样的是都有自己的成员变量、成员方法、构造器(只能使用private访问修饰符修饰)
 - 使用enmu定义的枚举类默认继承了java.lang.Enun类并且实现了java.lang.Seriablizable和java.lang.Comparable两个接口
 - 枚举类的所有实例(枚举值)必须在枚举类的第一行显式的列出,否则这个枚举值永远不可能产生实例,列出这些实例(枚举值)时,系统会自动添加public static final修饰,无需程序员显示添加

定义一个枚举类

public enum WeekEnum{
    //在第一行显示的列出七个枚举实例(枚举值),系统会自动添加 public static final修饰
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}

带有构造方法的

package com.uds.glf;

public enum WeekEnum {
    MONDAY("星期一"),FRIDAY("星期五");

    private String date;
    private WeekEnum(String date){
        this.date = date;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }


}


public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) {
        for (WeekEnum week : WeekEnum.values()) {
            System.out.println(week.getDate());
        }
    }

}

包含抽象方法的枚举类

package com.uds.glf;

public enum Operation {
    PLUS{
        @Override
        public double calculate(double x, double y) {
            // TODO Auto-generated method stub
            return 0;
        }

    },
    MINUS{

        @Override
        public double calculate(double x, double y) {
            // TODO Auto-generated method stub
            return 0;
        }
    },
    TIMES{

        @Override
        public double calculate(double x, double y) {
            // TODO Auto-generated method stub
            return 0;
        }

    },
    DIVIDE{

        @Override
        public double calculate(double x, double y) {
            // TODO Auto-generated method stub
            return 0;
        }

    };

    public abstract double calculate(double x ,double y);
}
<think>我们正在讨论C语言中的枚举类型(enum)。根据引用内容,枚举类型用于定义一组整型常量,使代码更易读。以下将分步骤说明枚举类型的使用方法: 1. **枚举的概念**:枚举(enum)是一种用户定义的数据类型,它由一组命名的整数常量(枚举成员)组成。这些常量默认从0开始赋值,依次递增1,但也可以显式指定值。 2. **枚举的声明与定义**: - 直接定义枚举类型并声明变量: ```c enum { MON, TUE, WED, THU, FRI, SAT, SUN } today; ``` 此处`MON`为0,`TUE`为1,以此类推。 - 定义带名称的枚举类型,便于后续使用: ```c enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; ``` 这里显式指定`MON=1`,后续依次递增(即`TUE=2`,...,`SUN=7`)。 3. **枚举变量的声明与赋值**: 使用已定义的枚举类型声明变量并赋值: ```c enum DAY yesterday = MON; enum DAY today = TUE; ``` 4. **枚举的使用**: - 枚举变量可以用于条件判断、函数参数等场景。 - 枚举值实际上是整数,因此可以直接用整型格式符打印: ```c printf("Yesterday: %d, Today: %d\n", yesterday, today); // 输出:Yesterday: 1, Today: 2 ``` 5. **定义枚举别名**(使用`typedef`): 可以简化枚举类型的变量声明: ```c typedef enum DAY Weekday; Weekday tomorrow = WED; // 等同于 enum DAY tomorrow = WED; ``` 或者直接: ```c typedef enum { MON=1, TUE, WED, THU, FRI, SAT, SUN } Weekday; Weekday day = FRI; ``` 6. **枚举的应用场景**: - 提高代码可读性:用有意义的名称代替数字(如表示星期、状态码等)。 - 限定变量取值范围:枚举变量只能赋值为枚举成员,减少错误。 - 与`switch`语句结合使用,逻辑清晰。 **实例**(结合引用[2]): ```c #include <stdio.h> // 定义枚举类型,指定MON从1开始 enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; int main() { // 声明枚举变量并赋值 enum DAY yesterday = MON; enum DAY today = TUE; enum DAY tomorrow = WED; // 打印枚举值(整数) printf("%d %d %d\n", yesterday, today, tomorrow); // 输出:1 2 3 return 0; } ``` **总结**: - 枚举类型通过`enum`关键字定义,包含一组命名的整数常量。 - 默认从0开始递增,也可显式赋值。 - 使用枚举可增强代码可读性和可维护性。 - 可用`typedef`创建别名简化声明。 §§相关问题§§ 1. 枚举类型在内存中如何存储? 2. 枚举类型能否进行算术运算? 3. 枚举类型与宏定义常量有何区别? 4. 枚举类型在C++中有哪些扩展特性?</think>### C语言枚举类型(enum)使用方法详解 枚举(enum)是C语言中一种特殊的数据类型,用于定义一组命名的整数常量,使代码更易读和维护。以下按照使用场景分类说明: --- #### 一、基本定义与声明 1. **直接定义枚举值** ```c enum { MON, TUE, WED, THU, FRI, SAT, SUN } today; ``` - 常量默认从0开始自动赋值:`MON=0`, `TUE=1`, ..., `SUN=6` - 变量`today`可直接使用枚举值:`today = WED;` 2. **定义带名称的枚举类型** ```c enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; // 显式指定起始值 enum DAY tomorrow = FRI; // 声明枚举变量 ``` - 未显式赋值的常量自动递增:`TUE=2`, `WED=3`, ..., `SUN=7` --- #### 二、枚举的高级用法 1. **显式指定常量值** ```c enum STATE { IDLE = 0, RUNNING = 5, ERROR = 0xFF // 支持十六进制 }; ``` 2. **使用typedef简化** ```c typedef enum { RED, GREEN, BLUE } Color; Color c = GREEN; // 无需重复写enum关键字 ``` 3. **枚举与switch结合** ```c switch(today) { case MON: printf("周一"); break; case TUE: printf("周二"); break; // ...其他情况 } ``` --- #### 三、枚举的底层特性 1. **本质是整型** 枚举值实际是`int`类型,可直接参与数值运算: ```c int day_num = today + 1; // 合法操作 ``` 2. **内存占用** 枚举变量大小与`int`相同(通常4字节),可通过`sizeof(enum DAY)`验证。 --- #### 四、典型应用场景 1. **状态机实现** ```c enum PROCESS_STATE { CREATED, RUNNING, BLOCKED, TERMINATED }; ``` 2. **错误码定义** ```c enum ERROR_CODE { FILE_NOT_FOUND = -1, PERMISSION_DENIED = -2, SUCCESS = 0 }; ``` 3. **提高可读性** 替代魔术数字:`setLED(RED)`比`setLED(0)`更易理解。 --- #### 注意事项 1. 不同枚举类型的变量不能直接比较(需强制类型转换) 2. C语言标准未规定枚举值的唯一性(允许值重复) 3. 枚举作用域与普通变量相同(遵循块作用域规则) > 示例程序:根据引用[2]修改 > ```c > #include <stdio.h> > > enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; > > int main() { > enum DAY today = TUE; > printf("Today: %d (周二)\n", today); // 输出:Today: 2 (周二) > > // 枚举遍历示例 > for(enum DAY d = MON; d <= SUN; d++) { > printf("Day %d: ", d); > if(d == SAT || d == SUN) printf("Weekend\n"); > } > return 0; > } > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值