【Java学习笔记】8:Java枚举和枚举类
2017-03-29 00:29
519 查看
枚举可以对类似的相同类型的对象同时进行声明,在程序中调用这些元素时,不会出现混淆或重复。
枚举的定义形式如下:
enum 枚举名{枚举值表};
设有变量a、b、c被说明为上述的weekday,可采用下面三种方式:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
enum weekday a,b,c;
或者
enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;
或者
enum{sun,mon,tue,wed,thu,fri,sat}a,b,c
枚举类可以这样建立:
如果上诉代码报错:enum cannot be resolved to a type,表示系统不识别enum。
J2SE1.5新增了enum关键字,用于定义枚举类。所以只有在jdk1.5及以后,enum才能使用。
解决办法:
打开工程对应的properties ——>Java Compiler, 修改 Compiler compliance level为1.5或者1.5以上。
*在Switch语句中使用枚举
运行结果:红色
在JDK1.5以后,通过Enum创建的枚举类型,也可以被Switch语句判断使用。
枚举类Enum是java.lang包下定义的一个公共类,它的作用是用来构造新的枚举类型。Enum类中定义了大约十多个方法,每一种方法都是对用Enum创建的枚举类型的操作,所以Enum类指的是一个完整的类型,它拥有自己的方法。当用枚举关键字enum定义一个枚举类型时,相当于定义了这样一个类并且将此类继承Enum类。被定义的对象拥有Enum类中的构造方法的使用权。
*观察枚举对象的编号
运行结果:
RED-->0
GREEN-->1
BLUE-->2
在Enum类中构造方法是受保护的,实际上对于每个枚举对象,一旦声明之后就表示自动调用此构造方法,所有的编号均采用自动编号的方式进行。在没有对编号特殊声明时,Java虚拟机一般对被创建的枚举类型对象从0开始自动编号。
在枚举中可以直接定义构造方法,一旦构造方法定义之后,则所有的枚举对象都必须明确地调用此构造方法。
当一个枚举实现一个接口之后,各个枚举对象都必须分别实现接口中的抽象方法。
*枚举的接口
运行结果:
RED-->0:红色
GREEN-->1:绿色
BLUE-->2:蓝色
在枚举中定义抽象方法,则枚举中的每个元素都必须单独实现此方法。
*在枚举中定义抽象方法
运行结果:
RED-->0:红色
GREEN-->1:绿色
BLUE-->2:蓝色
参考书籍是人民邮电的《Java从入门到精通》,笔记中的部分例子和释义是基于这本书写的,也有一些来自网络。
今天实在太累了,连上12节课,还要做作业,不过还是坚持着学完了今天的java,也写好了笔记发上来。挺开心的。
枚举的定义形式如下:
enum 枚举名{枚举值表};
设有变量a、b、c被说明为上述的weekday,可采用下面三种方式:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
enum weekday a,b,c;
或者
enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;
或者
enum{sun,mon,tue,wed,thu,fri,sat}a,b,c
枚举类可以这样建立:
enum Color { RED,GREEN,BLUE; }
如果上诉代码报错:enum cannot be resolved to a type,表示系统不识别enum。
J2SE1.5新增了enum关键字,用于定义枚举类。所以只有在jdk1.5及以后,enum才能使用。
解决办法:
打开工程对应的properties ——>Java Compiler, 修改 Compiler compliance level为1.5或者1.5以上。
*在Switch语句中使用枚举
package day8;
enum Color { RED,GREEN,BLUE; }
public class EnumDemo {
public static void main(String[] args) {
switch(Color.RED)
{
case RED:
{
System.out.println("红色");
break;
}
case GREEN:
{
System.out.println("绿色");
break;
}
case BLUE:
{
System.out.println("蓝色");
break;
}
}
}
}
运行结果:红色
在JDK1.5以后,通过Enum创建的枚举类型,也可以被Switch语句判断使用。
枚举类Enum是java.lang包下定义的一个公共类,它的作用是用来构造新的枚举类型。Enum类中定义了大约十多个方法,每一种方法都是对用Enum创建的枚举类型的操作,所以Enum类指的是一个完整的类型,它拥有自己的方法。当用枚举关键字enum定义一个枚举类型时,相当于定义了这样一个类并且将此类继承Enum类。被定义的对象拥有Enum类中的构造方法的使用权。
*观察枚举对象的编号
package day8;
enum Color { RED,GREEN,BLUE; }
public class EnumDemo {
public static void main(String[] args) {
//通过for循环并使用values()方法遍历枚举对象c的取值
for(Color c:Color.values())
{
//输出其名称,输出其编
4000
号
System.out.println(c.name()+"-->"+c.ordinal());
}
}
}
运行结果:
RED-->0
GREEN-->1
BLUE-->2
在Enum类中构造方法是受保护的,实际上对于每个枚举对象,一旦声明之后就表示自动调用此构造方法,所有的编号均采用自动编号的方式进行。在没有对编号特殊声明时,Java虚拟机一般对被创建的枚举类型对象从0开始自动编号。
在枚举中可以直接定义构造方法,一旦构造方法定义之后,则所有的枚举对象都必须明确地调用此构造方法。
当一个枚举实现一个接口之后,各个枚举对象都必须分别实现接口中的抽象方法。
*枚举的接口
package day8; interface Info//该接口用来调用getColor方法从而得到枚举类中内容 { public String getColor(); } enum Color implements Info//枚举类实现该接口 { RED { public String getColor() { return "红色"; } }, GREEN { public String getColor() { return "绿色"; } } , BLUE { public String getColor() { return "蓝色"; } }; } public class EnumDemo { public static void main(String[] args) { //通过for循环并使用values()方法遍历枚举对象c的取值 for(Color c:Color.values()) { //输出其名称,输出其编号 System.out.println(c.name()+"-->"+c.ordinal()+":"+c.getColor()); } } }
运行结果:
RED-->0:红色
GREEN-->1:绿色
BLUE-->2:蓝色
在枚举中定义抽象方法,则枚举中的每个元素都必须单独实现此方法。
*在枚举中定义抽象方法
package day8; enum Color { RED { public String getColor() { return "红色"; } }, GREEN { public String getColor() { return "绿色"; } } , BLUE { public String getColor() { return "蓝色"; } }; public abstract String getColor();//枚举中定义的抽象方法 } public class EnumDemo { public static void main(String[] args) { //通过for循环并使用values()方法遍历枚举对象c的取值 for(Color c:Color.values()) { //输出其名称,输出其编号 System.out.println(c.name()+"-->"+c.ordinal()+":"+c.getColor()); } } }
运行结果:
RED-->0:红色
GREEN-->1:绿色
BLUE-->2:蓝色
参考书籍是人民邮电的《Java从入门到精通》,笔记中的部分例子和释义是基于这本书写的,也有一些来自网络。
今天实在太累了,连上12节课,还要做作业,不过还是坚持着学完了今天的java,也写好了笔记发上来。挺开心的。
相关文章推荐
- Java学习笔记83. 枚举类和常用的枚举方法
- java学习笔记之 --------枚举(enum)
- 黑马程序员—Java基础加强学习笔记之枚举&反射
- java学习笔记10--枚举
- java学习笔记----枚举测试题
- J2SE学习笔记3 — Java基本语法(9)数组和枚举
- java学习笔记23——枚举类
- Java学习笔记10--枚举
- JavaWeb学习笔记-java基础-6-枚举
- 黑马程序员-java学习笔记-枚举
- 《编写高质量代码改善Java程序的151个建议》学习笔记 第6章 枚举和注解
- Java学习笔记之JDK1.5新特性(五):枚举类
- java 学习笔记—— 自定义泛型、枚举与注释
- Java学习笔记83. 枚举的构造方法和接口
- 0029 Java学习笔记-面向对象-枚举类
- Java基础学习笔记之枚举与注解
- 学习笔记:Java 分类枚举和策略枚举(枚举的嵌套)
- java学习笔记_高级篇必会(可变参数,枚举)
- java学习笔记-枚举类
- java交通管理系统枚举学习笔记及心得