枚举和常量

枚举:

enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。
通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。
默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。例如:
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

确定数量、确定值得几个取值:东西南北、男女、上中下。
enum Gender{male,female}
enum QQStatus{online,offline,hidden}
枚举的用法,QQStatus status = QQStatus.online;
和用字符串币起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便。
枚举的作用:
1.限制用户不能随意赋值,只能在定义枚举时列举的值中选择
2.不需要司机每一个值是什么,只需要选择相应的值。
注意:定义枚举时,值不能是int类型
枚举类型的变量都可以强制转换为一个int类型
枚举的值在定义时是有一个默认编号的,编号从0开始。
如果把一个字符串转换成枚举类型:
(Gender)(Enum.Parse(typeof(Gender),"male");
(自枚)(Enum.Parse(typeof(自枚),"待转换的字符串");
public enum Gender{
maile,female}
class Program{
static void Main(string[] args){
Gender sex;
Console.WriteLine("输入你的性别");
string s = Console.ReadLine();
sex =(Gender)(Enum.Parse(typeof(Gender),s);
Console.WriteLine(sex);
Console.ReadKey();
//Console.WriteLine("你的性别:{0}",Gender.male.ToString());

}
}



常量:

常量是在编译时已知并在程序的生存期内不发生更改的不可变值。 常量使用 const 修饰符进行声明。 只有 C# 内置类型(System.Object 除外)可以声明为 const。 有关内置类型的列表,请参见内置类型表(C# 参考)。 用户定义的类型(包括类、结构和数组)不能为 const。 请使用 readonly 修饰符创建在运行时初始化一次即不可再更改的类、结构或数组。
常量的用法,const 类型 常量名 = 常量值
static void Main(string[]args){
const int PI = 3.14;
}
### Java 枚举常量的区别及使用场景 #### 区别概述 在Java中,`enum`(枚举)是一种特殊的类,用于定义一组固定的常量集合。虽然传统的`final static`常量也可以用来表示固定值集,但枚举提供了一种更为强大灵活的方式[^3]。 1. **语法结构** - 常量通常通过`public static final`修饰符声明为简单变量。 - 枚举则是一个独立的类型,具有自己的构造函数、属性方法[^4]。 2. **功能扩展** - 枚举不仅可以存储简单的值,还能包含复杂的数据结构逻辑。例如,它可以拥有字段、方法甚至实现接口。 - 而传统常量仅限于单一值表达。 3. **安全性** - 枚举天生支持单例模式,其成员是不可变的对象实例,因此具备更高的线程安全性。 - 普通常量可能因外部修改而导致不一致状态。 4. **可读性维护性** - 使用枚举可以使代码更具语义化,增强程序的可读性[^2]。 - 对比之下,大量散乱分布的传统常量可能会降低代码清晰度。 5. **序列化能力** - 枚举提供了内置的可靠序列化机制,在反序列化过程中能保持唯一性。 - 自定义常量需手动处理序列化的细节问题。 --- #### 示例对比 以下是两种方式的具体例子: ##### 传统常量方式 ```java public class ColorConstants { public static final String RED = "RED"; public static final String GREEN = "GREEN"; public static final String BLUE = "BLUE"; private ColorConstants() {} // 防止实例化 } ``` 调用时: ```java String color = ColorConstants.RED; if (color.equals(ColorConstants.GREEN)) { ... } ``` ##### 枚举方式 ```java public enum ColorEnum { RED, GREEN, BLUE; @Override public String toString() { return name().toLowerCase(); } } ``` 调用时: ```java ColorEnum color = ColorEnum.RED; if (color == ColorEnum.GREEN) { ... } // 更加简洁直观 ``` 此外,还可以给枚举增加更多特性,如下所示: ```java public enum Direction { NORTH(0), SOUTH(180), EAST(90), WEST(270); private int angle; Direction(int angle) { this.angle = angle; } public int getAngle() { return angle; } } // 使用示例 Direction dir = Direction.NORTH; System.out.println("方向角度:" + dir.getAngle()); ``` --- #### 使用场景分析 1. **数据库映射** 当需要将数据库中的某些字段转换成对应的业务含义时,推荐使用枚举来代替字符串或整数型常量。这样不仅提高了代码的安全性,还便于后续调整。 2. **配置选项** 如果应用程序存在多种预设的选择项,则适合采用枚举形式加以管理。相比起单纯依赖硬编码数值或者字符窜来说,这种方式显得更加优雅合理。 3. **策略模式实现** 利用枚举配合接口完成不同算法切换的任务非常常见。下面给出一段示范代码片段: ```java interface Operation { double apply(double x, double y); } enum MathOperation implements Operation { ADDITION { @Override public double apply(double x, double y) { return x + y; } }, SUBTRACTION { @Override public double apply(double x, double y) { return x - y; } }; abstract double apply(double x, double y); } // 测试部分 System.out.println(MathOperation.ADDITION.apply(5, 3)); // 输出结果应为8.0 ``` 4. **替代switch-case结构** 在面对繁杂分支判断的情况下,借助枚举往往可以让解决方案变得更加紧凑高效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值