好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java面向对象基础知识之枚举

一、枚举的定义

枚举是一组命名整型常量。枚举类型是使用enum关键字声明的。

C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

二、枚举的声明

声明枚举的一般语法:

?

1

2

3

4

enum <enum_name>

{

     enumeration list

};

其中,

enum_name 指定枚举的类型名称。 enumeration list 是一个用逗号分隔的标识符列表。

枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.例如:

?

1

enum Day { Sun, Mon, tue, Wed, thu, Fri, Sat };

在编译枚举类型时,会把每个符号转换成类型的一个常量字段很一个int32的公共实例字段,不够后者不能通过代码调用。

因为枚举的符号是一个常量字段,如果在不同的程序集引用,可能会出现一些版本问题,

每个枚举都有一个基础类型, 包含 byte , sbyte , short , ushort , uint , long , ulong , 和 int (最常用,C#默认的类型)

三、枚举的转换

枚举转换成整数

?

1

2

Day today = Day.Wed;

int dayNumber = ( int )today;

枚举转换成字符串

?

1

2

Day today = Day.Wed;

string todayStr = today.ToString();

四、枚举的方法

枚举的主要三个方法: Enum.GetName() 、 Enum.GetNames() 、 Enum.GetValues()

?

1

2

3

4

Day today = Day.Wed;

string name = Enum.GetName(typeof(Day), 3 );

Enum.GetNames(typeof(Day))

Enum.GetValues(typeof(Day))

GetName :获取单个枚举的名称

GetNames :获取所有枚举的名称

GetValues :获取所有枚举的值

五、标志枚举(二进制枚举)

定义枚举时,添加Flags特性,之后便可以对这些值执行AND、OR、NOT、XOR按位运算

?

1

2

3

4

5

6

7

8

9

10

public enum MyEnum

{

     MyEnum1 = 1 , //0x1

     MyEnum2 = 1 << 1 , //0x2

     MyEnum3 = 1 << 2 , //0x4

     MyEnum4 = 1 << 3 , //0x8

     MyEnum5 = 1 << 4 , //0x10

     MyEnum6 = 1 << 5 , //0x20

     MyEnum7 = 1 << 6 //0x40

}

此时可以使用位移运算方便的获取多个枚举的组合变量:

?

1

2

MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2;

myEnum |= myEnum | MyEnum.MyEnum3;

或在组合中删除其中一项枚举:

?

1

2

myEnum ^= MyEnum.MyEnum1;

myEnum &= ~MyEnum.MyEnum2;

需要判断是否包含某一枚举值时,可以使用以下方法判断:

?

1

(curMyEnum & MyEnum.Enum1) > 0

并集  &交集  ^差集

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

原文链接:https://www.cnblogs.com/xuwendong/p/10369597.html

查看更多关于Java面向对象基础知识之枚举的详细内容...

  阅读:10次