Enum 枚举的初步学习(1)

简介:
1.枚举类型的特点:
      1. 是一个类,本身提供了一些方法
     2.继承了Enum类,所以不能继承其他类
     3.主要作用,定义个新的数据类型(和Class 稍微有些区别)
    4.values()方法 比较特殊。
   5.实现了 Comparable<E>, Serializable 2个接口
2.应用场景:
    一般应用在需要一个新的数据类型,而且该数据内容相对固定,涉及到的业务逻辑不复杂的情况。
3.示例代码
  
package enumerated.randy; 
/** 
* @param args 
*/
 

public  class EnumTest { 
   // 定义一个enum 
     enum Color{ 
        
      // 定义枚举内容 
      RED( "红色"),GREEN( "绿帽子"),YELLOW( "黄色文化");        
     //定义另外一个属性 
       private String desp; 
        
       // 注意该构造方法是私有的 
       private Color(String desp){ 
         this.desp = desp;         
      } 
       // 定义另外一个方法 
       public String getDesp(){ 
         return  this.desp+ ":"+ this.name(); 
      } 
        

  } 
     
     //switch 中的 枚举类型 
   public  void change(){ 
     switch(favorate){ 
     case RED:    favorate = Color.GREEN; 
     break
     case GREEN : favorate = Color.YELLOW; 
     break
     case YELLOW :favorate = Color.RED; 
     break
    } 
     
  } 
    
   public Color favorate = Color.RED; 
   public  static  void main(String[] args) { 

    System.out.println( "----------------枚举一些常用的方法---------------"); 
     for(Color c :Color.values()){ 
      System.out.println(c.getClass()); 
      System.out.println(c.getDeclaringClass()); 
      System.out.println(c.name()); //RED 
      System.out.println(c.compareTo(Color.RED)); 
      System.out.println(c.ordinal()); 
      System.out.println(c.equals(Color.RED)); 
      System.out.println(c == Color.RED); 
    } 

System.out.println( "----------------测试枚举类型中定义的方法-----");     
     for(Color c :Color.values()){ 
      System.out.println(c.getDesp()); 
    } 

System.out.println( "-------------测试enum 的 switch 用法----------------------"); 
    EnumTest test =  new EnumTest(); 
    Color color = Color.RED; 
     for( int i=0;i<=7;i++){ 
      test.change(); 
      System.out.println(test.favorate.getDesp()); 
    } 
  } 


 
枚举一些常用的方法
class enumerated.randy.EnumTest$Color
class enumerated.randy.EnumTest$Color
RED
0
0
true
true
class enumerated.randy.EnumTest$Color
class enumerated.randy.EnumTest$Color
GREEN
1
1
false
false
class enumerated.randy.EnumTest$Color
class enumerated.randy.EnumTest$Color
YELLOW
2
2
false
false
测试枚举类型中定义的方法-----
红色:RED
绿帽子:GREEN
黄色文化:YELLOW
测试enum 的 switch 用法
绿帽子:GREEN
黄色文化:YELLOW
红色:RED
绿帽子:GREEN
黄色文化:YELLOW
红色:RED
绿帽子:GREEN
黄色文化:YELLOW
 
 
 
通过代码我们可以知道:
  枚举类型: 除了可以定义【数据内容】之外,还可以添加另外的属性“desp" 和其他方法“getDesp()”. 注意,在“数据内容”后面有“;”
2.可以有构造方法,但是构造方法不能是public的,不管是有参数的,还是无参数的
3.从Enum 类 继承了若干方法,方便Enum 数据的访问。
4.values() 是一个静态方法,但是在Enum中不存在,只有一个带参数的values(Class class)。也就是说,values方法是在JVM 编译的时候添加的。
5. 注意 在switch 的case语句中, 
  case RED:  favorate = Color.GREEN;
  break;
不能写成   case Color.RED:  favorate = Color.GREEN;
这一点有点蹊跷。 大概是switch(color)  已经确定了是Color 数据类型了。


本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/293970,如需转载请自行联系原作者
相关文章
|
1月前
|
C语言
C enum(枚举)
C enum(枚举)
12 0
|
1月前
|
安全 算法 编译器
【C++基础语法 枚举】C/C++ 中enum枚举量的介绍:介绍enum枚举量在C/C中的作用和使用方法
【C++基础语法 枚举】C/C++ 中enum枚举量的介绍:介绍enum枚举量在C/C中的作用和使用方法
32 2
|
4月前
|
程序员 测试技术 C++
[C++] enum枚举类型用法
[C++] enum枚举类型用法
36 0
|
3月前
|
SQL Java 数据库连接
myabtis中是否可以映射 Enum 枚举类
myabtis中是否可以映射 Enum 枚举类
|
算法 安全 小程序
使用枚举的正确姿势
使用枚举的正确姿势
237 0
使用枚举的正确姿势
|
编解码 网络协议 5G
【C/C++】一文了解枚举使用
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。通俗来讲,枚举是具有共同属性的一类整数常数的有限集合,例如星期一到星期天,就是一个成员个数为7的枚举类型,枚举成员也称为枚举项。
113 0
【C/C++】一文了解枚举使用
|
Java C语言 Spring
enum(枚举)
枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。
188 0
|
JavaScript C#
enum:枚举类型
enum:枚举类型
133 0
|
Java 开发者
枚举(enum 类)|学习笔记
快速学习 枚举(enum 类)
134 0