欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2023-02-20 09:45:32|栏目:JAVA代码|点击:

一、枚举的定义

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

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

二、枚举的声明

声明枚举的一般语法:

enum <enum_name>
{ 
    enumeration list 
};

其中,

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

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

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

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

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

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

三、枚举的转换

枚举转换成整数

Day today = Day.Wed;
int dayNumber = (int)today;

枚举转换成字符串

Day today = Day.Wed;
string todayStr = today.ToString();

四、枚举的方法

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

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按位运算

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
}

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

MyEnum myEnum = MyEnum.MyEnum1 | MyEnum.MyEnum2;
myEnum |= myEnum | MyEnum.MyEnum3;

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

myEnum ^= MyEnum.MyEnum1;
myEnum &= ~MyEnum.MyEnum2;

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

(curMyEnum & MyEnum.Enum1) > 0

并集  &交集  ^差集

总结

上一篇:java实现单链表倒转的方法

栏    目:JAVA代码

下一篇:SpringBoot整合Lombok及常见问题解决

本文标题:Java面向对象基础知识之枚举

本文地址:http://www.codeinn.net/misctech/226069.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有