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,如需转载请自行联系原作者
相关文章
|
6月前
|
C语言
C enum(枚举)
C enum(枚举)
38 0
|
1月前
|
C#
C# 枚举(Enum)
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
42 9
|
2月前
|
存储 C语言
C enum(枚举)详解
在C语言中,`enum`(枚举类型)允许用户定义包含命名整数常量的数据类型,提高了代码的可读性和可维护性。通过关键字`enum`定义枚举,如`enum Color {RED, GREEN, BLUE}`。枚举值默认从0开始递增,也可自定义。枚举类型实际上是整型的别名,可用于简化代码并限制变量的具体取值范围。
141 15
|
6月前
|
程序员 C语言
c enum(枚举)
c enum(枚举)
82 1
|
6月前
|
程序员 测试技术 C++
[C++] enum枚举类型用法
[C++] enum枚举类型用法
103 0
|
Java C语言 Spring
enum(枚举)
枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。
250 0
|
JavaScript C#
enum:枚举类型
enum:枚举类型
184 0
jmu-枚举WeekDay
jmu-枚举WeekDay
135 0
|
安全 Java 程序员
为什么建议你使用枚举?(下)
为什么建议你使用枚举?
248 0
为什么建议你使用枚举?(下)
|
Java 开发者
枚举(enum 类)|学习笔记
快速学习 枚举(enum 类)
170 0