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

 更新时间:2021年11月08日 09:55:06   作者:一指流砂~  
这篇文章主要介绍了Java面向对象的之枚举,文中有非常详细的代码示例,对正在学习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 map遍历的四种方法总结

    java map遍历的四种方法总结

    以下是我整理的关于java中map的遍历的四种方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • SpringMvc返回modelandview返回的页面无法跳转问题及解决

    SpringMvc返回modelandview返回的页面无法跳转问题及解决

    这篇文章主要介绍了SpringMvc返回modelandview返回的页面无法跳转问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • java 全角半角字符转换如何实现

    java 全角半角字符转换如何实现

    在java中可能会用到过全角半角字符转换问题,于是网上搜索整理了一下,晒出来和大家分享,希望可以帮助你们
    2012-12-12
  • 详解Java前缀树Trie的原理及代码实现

    详解Java前缀树Trie的原理及代码实现

    Trie又被称为前缀树、字典树。Trie利用字符串的公共前缀来高效地存储和检索字符串数据集中的关键词,最大限度地减少无谓的字符串比较,其核心思想是用空间换时间。本文主要介绍了Trie的原理及实现,感兴趣的可以了解一下
    2022-11-11
  • springboot中的starter使用解析

    springboot中的starter使用解析

    这篇文章主要介绍了springboot中的starter使用解析,引入了starter依赖之后,基础组件就可以像在spring的bean一样在项目中使用,那其实只要找到在哪里加载了这些bean就明白了,需要的朋友可以参考下
    2023-10-10
  • Java设计模式之迭代器模式解析

    Java设计模式之迭代器模式解析

    这篇文章主要介绍了Java设计模式之迭代器模式解析,迭代器模式提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示,本文提供了部分代码,需要的朋友可以参考下
    2023-09-09
  • Java结构型设计模式之组合模式详解

    Java结构型设计模式之组合模式详解

    组合模式,又叫部分整体模式,它创建了对象组的数据结构组合模式使得用户对单个对象和组合对象的访问具有一致性。本文将通过示例为大家详细介绍一下组合模式,需要的可以参考一下
    2022-09-09
  • java LeetCode刷题稍有难度的贪心构造算法

    java LeetCode刷题稍有难度的贪心构造算法

    这篇文章主要为大家介绍了java LeetCode刷题稍有难度的贪心构造题解示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Mybatis在sqlite中无法读写byte[]类问题的解决办法

    Mybatis在sqlite中无法读写byte[]类问题的解决办法

    这篇文章主要给大家介绍了关于Mybatis在sqlite中无法读写byte[]类问题的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 关于Java中try finally return语句的执行顺序浅析

    关于Java中try finally return语句的执行顺序浅析

    这篇文章主要介绍了关于Java中try finally return语句的执行顺序浅析,需要的朋友可以参考下
    2017-08-08

最新评论