java枚举常量
❶ java:这里的枚举常量是如何定义的呢
枚举(从JDK1.5开始有)
用于代表”实例已经固定“的类,而且定义时就必须在【第一行】创建初始化并列出来。
语法格式:
修饰符 enum 枚举名{
//立即在第一行列出该枚举的所有实例。
}
—— 修饰符 可以是 public | 省略 | abstract | final。 abstract与final必须出现其中一个。
—— 枚举的构造器只能用private修饰。
—— 枚举类的实例必须在第一行显式的列出。
所有的枚举都有一个values()方法,返回枚举实例
switch(byte|short|char|int|String|枚举)
●有了枚举之后,它的实例已经创建出来了,只需要用它们就行了。
●枚举可以有Field,方法,构造器(只能是private修饰),初始化块,内部类。
列出枚举值,并不是简单的定义几个枚举值的变量名。
而是调用枚举类的构造器来创建相应的实例。
定义枚举的方法时要非常小心,
●包含抽象方法的枚举类
●枚举可以实现接口。
A。实现接口,并直接实现所有的抽象方法。
此时枚举类不再是抽象枚举了。
B。实现接口,但并不直接实现抽象方法。
此时枚举类就只能是抽象枚举类。
❷ java中的枚举类和常量类区别在哪儿
说白了
枚举就是将常量值限定在了指定的范围,
比如定义常量 int型 可以键入 任何的int值
如果定义枚举 里面 有 int 型 1 2 3 那么这个地方就只能键入1 2 3 中的一个,
❸ 如何使用java 枚举定义常量
枚举类:
publicenumColor{
RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLO("黄色",4);
privateStringname;
privateintindex;
privateColor(Stringname,intindex){
this.name=name;
this.index=index;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetIndex(){
returnindex;
}
publicvoidsetIndex(intindex){
this.index=index;
}
}
测试类:
publicclassB{
publicstaticvoidmain(String[]args){
//输出某一枚举的值
System.out.println(Color.RED.getName());
System.out.println(Color.RED.getIndex());
//遍历所有的枚举
for(Colorcolor:Color.values()){
System.out.println(color+"name:"+color.getName()+"index:"+color.getIndex());
}
}
}
输出结果:
红色
1
REDname:红色index:1
GREENname:绿色index:2
BLANKname:白色index:3
YELLOname:黄色index:4
❹ java枚举类型enum用法
用法如下:
用法一:常量 在JDK1.5之前,我们定义常量都是:public static fianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法
用法六:使用接口组织枚举
用法七:关于枚举集合的使用
❺ JAVA中的枚举常量是什么
枚举用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
任意两个枚举成员不能具有相同的名称
在枚举类型中声明的第一个枚举成员它的默值为0
允许多个枚举成员有相同的值.
没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1.
e.g:
public enum Number
{
a=1,
b,
c=1,
d
} ;
b的值为2,d的值为2.
❻ java枚举与常量类区别
常量publicclassConstant{publicstaticfinalStringCONST_ONE="bb";publicstaticfinalStringCONST_TWO="cc";}
常量作为参数时,是String,int等弱类型,开发人员可以传入没有在常量接口里定义的值,这个问题无法通过编译器发现。
由于开发人员可以直接写常量,所以不能用==对比,只能用equals对比,不能优化性能。
开发人员没有参考资料时,不可能知道某个int类型的参数到底应该赋什么内容。
编译时,是直接把常量的值编译到类的二进制代码里,常量的值在升级中变化后,需要重新编译引用常量的类,因为里面存的是旧值。
如果常量类的构造器不私有,无法限制开发员继承/实现接口,开发员能够在子接口里继续添加常量.而这些常量可能得不到祖先层的支持。
publicclassConstant{privateStringname;privateEnumClassA(){this.name=name;}_ONE=newConstant("bb");_ONE=newConstant("cc");}
私有构造函数,避免被继承和扩展。
定义方法的参数时,必须用枚举常量类类型,如上面的Constant,这样就转变成了强类型,不会出现弱类型引用的问题。
常量值地址唯一,可以用==直接对比,性能会有提高。
编译时,没有把常量值编译到代码里,即使常量的值发生变化,也不会影响引用常量的类。
枚举类