java中枚举用来干什么的?

java中枚举用来干什么的?,第1张

枚举是该类型的一个实例,相当于static final 类型的变量,可用于switch中,

//枚举类:
package comgoldentest;public enum Operation {
    /增/  
    INSERT,
    /删/
    DELETE,
    /改/
    UPDATE,
    /查/
    QUERY
}
//测试类
package comgoldentest;
public class TestEnum {
    public static void main(String[] args) {
        Systemoutprintln(OperationDELETE);
        Systemoutprintln(OperationvalueOf("DELETE"));
        Systemoutprintln(OperationvalueOf("DELETE")==OperationDELETE);
        Systemoutprintln("DELETE"equals(OperationDELETEtoString()));
        switch (OperationDELETE) {
        case INSERT: /TODO/break;
        case DELETE: /TODO/Systemoutprintln("DELETE");break;
        case UPDATE:/TODO/break;            
        case QUERY:  /TODO/break;        
        default:
            break;
        }
    }
}

枚举在Java中是一个类 ,代表着类的一一列举。要想知道枚举具体的使用首先要先知道它的具体的 属性 方法 才可以。虽然说我们在实际应用中很少去关注它的属性和方法,而是更多的关注它的 特性 ,利用它本身的特性去满足各种有意思的场景。

 由于上篇内容讲了我们自定义的枚举其实经过编译之后,实际继承的是lang包下的Enum类。虽然我们自定义的枚举类中可能存在不定义私有属性的情况,但继承的Enum类中自身就带有着两个属性,name属性、和ordinal属性。Enum类的源码

 name为我们枚举值的名称,而ordinal这个词的意思是“序数”或者说“有顺序的”,其实就是序数。我们知道枚举所代表的就是包含一个以上枚举值的集合,既然是集合它就是有顺序的,而大多数我们使用的时候往往忽略了它的序数这个属性,似乎忘了枚举是枚举这件事了。
 枚举中的序号是根据我们的枚举中显示的顺序决定的,其实是是语法糖转换时初始化枚举值时决定了枚举值的序数,枚举中,第一个枚举值的序数总是小于后面枚举值的序数,且序数是从0开始的。

 接着上面讲的序数ordinal,针对序数我们先讲枚举的values()方法。

作为一个枚举值的集合,所必须要有的 *** 作肯定是遍历,这也是静态常量所没有的支持的。values()其实就是获取我们枚举值的数组:

 虽然我们自定义的枚举类是可以使用这个方法的,但继承的Enum类却没有这个方法,其实values()这个方法是很特殊的一个方法,之前说过枚举是一种语法糖,在它真正编译后,就会产生values()这个方法,所以我们自定义的枚举类是可以使用这个方法的,而且values()方法所返回的其实是一个浅拷贝;

 前面说到枚举有两个属性,name和ordinal,但实际上枚举只提供了根据name来获取具体枚举值的方法,却没有提供根据ordinal来获取具体枚举值的方法,但是values()方法也算是另外一种弥补了,根据values()得到的数据再根据ordinal序数获取具体的枚举值其实也是一样的效果。valueOf()方法就是那个根据name获取具体枚举值的方法,使用案例:

可选姿势为两种,一参和两参,具体看案例。

typedef只是给枚举类型起个别名,在图中代码根本没用处。

你图中的代码,是直接使用了枚举成员,枚举成员就是常量,直接使用常量没问题。

枚举型是集合,集合中的元素(枚举成员)是一些命名的整型常量,相当于多个#define语句(只不过枚举成员对应的数值可自增)

这个成员常量不同于结构成员变量名,是唯一的,你可以试试再定义一个枚举类型比如:

typedef enum

{

  Monday=0,

  Tuesday

}WeekTypedef2;

这样会报错,因为你之前定义的枚举类型中已经有同名成员了。换个名字就可以了,比如:

typedef enum

{

  Monday2=0,

  Tuesday2

}WeekTypedef2;

枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。
概念
在C#或C++,java等一些计算机编程语言中,枚举类型是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中,它是一种构造数据类型。枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
定义:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内
使用格式:枚举类型放在窗体模块、标准模块或共用模块中的声明部分,通过enum语句来定义。
格式:[public|private] enum name
membername[=constantexpression]
membername[=constantexpression]
(maomi)

End enum
public:表示该枚举类型在整个工程中都是可见的(缺省的)
private:表示枚举类型只在所声明的模块中是可见的。Name: 枚举类型的名称。必须是一个合法的VB标识符,在定义该枚举类型的变量或参数时用该名称来指定类型
Membername:指定该枚举类型的组成元素名称
Constantexpression:枚举类型的组成元素的值如果没有指定具体值,则所有赋的值或者是0或者比其直接前驱的值大1元素的值也可以是别的enum类型VB中将枚举中的元素的值按长整数处理如果将一个浮点数值赋给一个枚举中的元素,VB会将该值取整为最接近的长整数

1、枚举常量是枚举类型中的值,即枚举值。枚举类型是一种用户定义的类型,只有用户在程序中定义它后才能被使用。用户通常利用枚举类型定义程序中需要使用的一组相关的符号常量。

2、枚举类型的定义格式为:enum枚举类型名> {枚举表>};它是一条枚举类型定义语句,该语句以enum保留字开始,接着为枚举类型名,它是用户命名的一个标识符,以后就直接使用它表示该类型,枚举类型名后为该类型的定义体,它是由一对花括号和其中的枚举表所组成,枚举表为一组用逗号分开的由用户命名的符号常量,每个符号常量又称为枚举常量或枚举值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13164983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-14
下一篇 2023-06-14

发表评论

登录后才能评论

评论列表(0条)

保存