黑马程序员技术交流社区
标题:
关于枚举的小问题
[打印本页]
作者:
孙玉伟
时间:
2012-1-17 09:48
标题:
关于枚举的小问题
本帖最后由 西伯利亚、狼 于 2012-1-17 10:53 编辑
看了交通灯管理,我看到了张孝祥老师用枚举写了,12个方向,我就是想问,枚举一般在什么情况下用比较合适!!!
作者:
Joyuang
时间:
2012-1-17 09:59
首先你要了解枚举(enum)的概念,java.lang.Enum是JDK5.0版本新加入的类,我们所编写的枚举其实都是隐式的继承自它,既然它是类,因此会有类型安全性、编译期检查以及可将它用在变量声明中的能力。这可以把使用数值或字符串来模拟含义的常量彻底打败,枚举中的各个实例(值)都是被隐式声明为public static final的,而且你也不能将这些声明手动赋予给实例(值),编译器会自己处理。
枚举的应用场合:在你需要一个仅允许特定数据类型值的有限集合,在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。
如果搞懂了这些问题,你就应该自己可以判断你的程序里需要不需要它,大量应用枚举这件事本身并不会引发什么(性能问题),要看你应用的场景是否合适,sun搞了enum必然有其道理,原则上讲JDK5以后都是为了简化开发,enum也是一样的,只要你认为使用了enum会为你编程带来便捷,那么你还考虑什么,程序员不要被业界那些条条框框所束缚,一动手就一大堆的面向对象思想,设计模式的,打个比方,你天天要去一个地方,建议你多试几条路,这样你就知道哪条最近了。
一起学习了~
作者:
孙玉伟
时间:
2012-1-17 10:17
呵呵,谢谢了,那个高新技术里面有了,刚好看到。。。。。
作者:
孙玉伟
时间:
2012-1-17 13:57
西伯利亚、狼 发表于 2012-1-17 10:17
呵呵,谢谢了,那个高新技术里面有了,刚好看到。。。。。
谢谢。版主。。。
作者:
lvwenwen88
时间:
2012-1-19 09:43
枚举:有枚举 (enumeration)、枚举(enum)和枚举(pascal),用的最多是枚举(enum)。
枚举 (enumeration):
值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。所使用的语言给每个字段都分配一个基础类型的特定值。
枚举(enum):枚举在C/C++中,是一个被命名的整型常数的集合, 枚举在日常生活中很常见。
例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
SATURDAY, 就是一个枚举。
枚举的说明与结构相似, 其形式为:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数],
} 枚举变量;
如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺
次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次
加1的规则确定其值。
例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
enum Num{x1, x2, x3, x4}x;
当定义改变成:
enum Num
{
x1,
x2=0,
x3=50,
x4,
}x;
则x1=0, x2=0, x3=50, x4=51
注意:
1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略
","。
2. 初始化时可以赋负数, 以后的标识符仍依次加1。
3. 枚举变量只能取枚举说明结构中的某个标识符常量。
例如:
enum Num
{
x1=5,
x2,
x3,
x4,
};
enum strig x=x3;
此时, 枚举变量x实际上是7。
枚举(pascal):用于处理非数值的数据。
例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。 在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2