枚举与常量

目录 

先介绍一下两者的区别

 1、常量就是一个值 ,枚举是一组不变的值

 2、枚举是自己定义后再使用,有一定的约束 , 常量可以随便定义

 3、枚举传入的值是固定的值不会出错,常量是一个值,传递的参数是任意的

 4、限制用户不能随意赋值,只能在列举的值中选择,不需要死记每一个值,只需要选择相应的值

枚举的优点:
  枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。

  枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。

  枚举使代码更易于键入。在给枚举类型的实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可能的值

 

参考资源:

http://www.cnblogs.com/daniel206/archive/2008/01/16/1041745.html

http://blog.sina.com.cn/s/blog_6f3da82b01011oxd.html

http://zhidao.baidu.com/question/112136992.html

http://www.cnblogs.com/yank/archive/2009/02/27/1399423.html

 

 

转载于:https://www.cnblogs.com/Fengger/archive/2012/07/19/2599903.html

### 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、付费专栏及课程。

余额充值