java 枚举值赋值_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

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-03-28 14:32

浏览 5565

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值