`
凤凰山
  • 浏览: 144626 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java枚举的几种操作方法

阅读更多

Jdk 1.5后来了个哥们叫 enum 平时也用着,但也未做个总结啥地,今儿个同事问我如何用,就整理了下。

 

枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。

 

定义枚举 方法很简单,就跟定义一个类一样,只是把class换成 enum,其他的,你懂地。e.g:

 

public enum WorkDay{
    Monday,Tuesday,Wednesday,Thurday,Friday;//定义时,枚举值间有逗号隔开,最后用分号结束
  }

 

废话不多说,直接上main 方法,拿去玩玩吧:

 

public static void main(String []args)
{
         /**
             * 枚举类型是一种类型,既然是类型,就是跟int,char他们 一样的,
         * 拿来定义变量,限制你对变量的赋值,就像 int a,你不能够给a一个 string的值
         * 同理,一个枚举用来定义一个变量时,你只能够赋枚举值,其方式为
         * "枚举名.值"
            */
	WorkDay  myworkday=WorkDay.Wednesday;   
         /** 补充点switch的基础知识,switch语句括号中支持byte \short \char \int类型,
       * jdk 1.5以后支持枚举,所以,这里可以直接使用枚举变量myworkday。
       * 呵呵,在jdk1.7后将switch将支持string
          */  
      switch (myworkday)
        {     

          /*枚举重写了toString()方法,所以枚举变量的值不带前缀
          * myworkday 里面的值应该是枚举括号里面的那几个
          */
        case Monday:
                          System.out.println("you work day is Monday !");
            break;
        case Tuesday:
                        System.out.println("you work day is Tuesday!");
            break;
        case Wednesday:
                        System.out.println("you work day is Wednesday !");
            break;
        case Thurday:
                        System.out.println("you work day is Thurday !");
            break;
        case  Friday:
               	 System.out.println("you work day is Friday !");
             break;
        }
	System.out.println("--------遍历所有值----------");
	//----使用values()方法返回一个数组
	
	for(WorkDay day:WorkDay.values())
	{		
		System.out.println(day);
	}
	//-----既然是数组,就可以统计大小
	System.out.println("WorkDay 里面有   "+WorkDay.values().length+" 个元素");
               //--------------------调用 ordinal()方法,返回枚举值在枚举中的索引,数组索引嘛,当然从0开始
	System.out.println(WorkDay.Monday.ordinal());
	System.out.println(WorkDay.Friday.ordinal());
             //---默认实现java.lang.Comparable接口 ,测试测试
	System.out.println(WorkDay.Monday.compareTo(WorkDay.Thurday));//结果应该是 -3
	//---Monday的索引为0,Thurday为 3,0-3=-3,
	System.out.println(WorkDay.Friday.compareTo(WorkDay.Tuesday));//同理,结果应该为4-1=3,
	
}

 

简单吧,来点狠的,前面说了,枚举有点像类,只是把class换成了enum,那么它跟一般的类一样可以添加属性或方法。

 

  public enum WeAreJavaer{      
        chinese,java, spring, DB2, AIX; // 枚举列表,必须写在最前面,否则编译出错
        private final static String location = "javaeye";      //定义一个属性
        public static WeAreJavaer getInfomation() {         
         WeAreJavaer flag=null;
            if (location.equals("javaeye"))
              {
             flag=java;             
              }
            else
             { 
             flag= chinese;
             }
              return flag;
            }
    } 

老规矩,直接上main()方法测试:

 

写道
public static void main(String []ags)
{
System.out.println("---------------------测试调用枚举中写的方法-------------------------------");
System.out.println("直接调用枚举里面的方法: "+ WeAreJavaer.getInfomation());
}

 

3、来点更狠的。

 

 你可以通过括号来给enum赋值,这样的话,你必须有带参的构造方法,还需要有一属性与方法,否则编译时会出错。

 另外,你如果给enum里面的元素赋值的话,要么都赋,要么都不赋,不要东赋一个,西赋一个。

 如果不赋值则不能写构造方法,如果你赋值了,而没有构造方法,编译还是通不过,废话不多少,来,看:

 

	 public enum People {	     
	        xiaowang(20), xiaozhang(32),xiaoli(50), xiaogou(21); 
	       private final int age;   
	       
	        People(int value) { //构造器只能是默认或者private, 从而保证构造函数只能在内部使用
	            this.age = value;
	        }
	        public int getAge() {
	            return age;
	        }
	    }

 

好吧,啥也不说了,接下来的事,你懂地:

 

  public static void main(String[] args) {
	        for(People people:People.values()){
	            /*通过getValue()取得相关枚举的值*/
	            System.out.println(people+" 的年龄 :"+people.getAge());
	        }
	    }

 

 

 

 

 

 

 

 

 

2
1
分享到:
评论

相关推荐

    Java 基础核心总结 +经典算法大全.rar

    关于 null 的几种处理方式大小写敏感 null 是任何引用类型的初始值 null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 ...

    Java工具包提供了强大的数据结构

    在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表(Hashtable) 属性(Properties) 以上这些类是传统遗留的,在Java2...

    基于JAVA本地监听与远程端口扫描(源代码+论文).zip

    其他的几个类文件主要是辅助类,以及方法实现类,用来完成响应的业务操作。 3.1.2 功能大体介绍 该程序有以下功能模块: 本地监听:主要实现实时查看操作系统当前运行进程,并根据进程查看本机响应端口和远程计算机...

    超级有影响力霸气的Java面试题大全文档

    忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 28、short s1 = 1; s1 =...

    java 面试题 总结

    忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 25、short s1 = 1; s1 =...

    Java语言的科学与艺术 斯坦福大学经典教材

     自1995年首次发布以来,Java编程语言作为一种教学语言变得日益重要,现在已经成为初级计算课程斯坦福大学的标准语言。Java语言可以让学生编写高度交互式程序,这充分激发了他们的学习兴趣。但Java语言很复杂,老师...

    Java语言的科学与艺术(国外计算机科学经典教材)

    自1995年首次发布以来,Java编程语言作为一种教学语言变得日益重要,现在已经成为初级计算课程斯坦福大学的标准语言。Java语言可以让学生编写高度交互式程序,这充分激发了他们的学习兴趣。但Java语言很复杂,老师和...

    java课程设计报告贪吃蛇游戏设计.doc

    在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二...

    Java开发技术大全 电子版

    2.5.1三种基本控制结构58 2.5.2表达式语句和空语句59 2.5.3块语句60 2.5.4if~else分支语句61 2.5.5多路分支switch~case语句69 2.5.6当型循环while语句71 2.5.7直到型循环do~while语句72 2.5.8当型循环for...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型...

    【05-面向对象(下)】

    •在java类里只能包含Field,方法,构造器,初始化块,内部类(接口、枚举)等5种成员。 用static修饰的类成员属 于类成员,类Field既可通过类来访问,也可以通过类的对象来访问。当通过对象来访问类属性时,系统会在底...

    word源码java-ShangGuiGu-ZhouYang-JUC:周阳-juc

    线程的几种状态:(见:jdk Thread类源码中的state枚举类) NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED 并发和并行: 并发是指计算机在同一时间段内处理多任务的执行. 如我和小明同时访问淘宝网站,那么淘宝...

    javaSE代码实例

    5.3.3 枚举初始化 66 5.4 数组的相互赋值 67 5.4.1 基本类型数组赋值规则 67 5.4.2 引用型数组赋值规则 68 5.5 数组的常用操作 69 5.5.1 数组复制 69 5.5.2 数组排序 71 5.5.3 搜索指定元素 72 ...

    c#学习笔记.txt

    另外我发现论坛上学习Java的人都非常的有个性,当有人问起学习哪种语言更好时,他会打出几百个“JAVA”来,填满整个屏幕,也不说是为了什么。我觉得这样做未免有些太霸道了,如果你说这叫偏执狂我也不反对,虽然我...

    xml入门教程/xml入门教程

    <script value="java"/>(空元素) (属性名=“属性值”)>张三 XSLT,是用于对XML进行文档格式转换,把一个XML文档转换成另一种格式的XML文档,但是其中内容是不变的。 &2.DTD(Document Type Difinition DTD...

    Whole.Tomato.Visual.Assist.X.10.7.1925.0 2012年12月14日 破解补丁 dll Cracked 最新破解版

     过滤工具条,列表框支持输入过程中的内容过滤功能,可以将列表框内容限制为公共方法、资源、枚举等。  支持单词首字母缩写,输入一个缩写,Visual Assist X 将自动查找您所需要的符号。  速记,无需输入整个...

    Visual assist X 1626(带注册机)

     过滤工具条,列表框支持输入过程中的内容过滤功能,可以将列表框内容限制为公共方法、资源、枚举等。  支持单词首字母缩写,输入一个缩写,Visual Assist X 将自动查找您所需要的符号。  速记,无需输入整个单词...

Global site tag (gtag.js) - Google Analytics