【java基础回顾一】——枚举
来源:互联网 发布:屠龙战记转生修为数据 编辑:程序博客网 时间:2024/06/13 22:41
java枚举
【前言】这段时间正好忙完了前面的项目可以静下心来回顾一下java的基础知识,然后想把脑子里学习的东西整理一下,感觉太乱了有点,于是决定写一下博客分享下学习成果,还想录下视频供大家参考,一来检验下学习成果,二来也为大家提供更好的学习途径,三也为了证明我前面说过的一个道理:东西是不是学到了,要看你能不能很好的讲出来。
一、写在前面的话
如何学习一个新的东西:
【要点】把握两点:
1、存在的价值在哪里?
2、如何发挥它应有的价值?
这两点搞清楚了,这个东西就搞清楚了
二、java枚举的价值在哪里?
从JDK1.5之后,java语言引进了枚举这个概念,既然引进这个概念肯定说明这个概念有其存在的价值的,那么价值在哪里?
那么这里先要简单的介绍下JDK1.5之前,当我们处理一种类型的变量,要求其变量的取值只能为某几个固定的值的时候,比如说:季节这个变量,它的取值肯定只有4个,即“春、夏、秋、东”再没有别的了,这个时候我们采取的办法,一般是定义一个季节类:如下:
//季节类public class Season {public static final Season SPRING = new Season();public static final Season SUMMER = new Season();public static final Season AUTUMN = new Season();public static final Season WINTER = new Season();public Season(){}}
这样当我们在使用它的时候就能控制其变量的取值了:但是我们发现如果当一个类型的变量有很多种固定取值的时候,那么这么写就会很麻烦,枚举的出现就解决了这个问题,这就是其存在的意义,就是为了让这一切变得更便捷,其实没有枚举也完全可以进行各种开发,只是相对来说会麻烦一些。
三、如何发挥java 枚举应有的价值?
3.1、基本用法:
enum很像特殊的class,实际上enum声明定义的类型就是一个类。而这些类都是类库中Enum类的子类(java.lang.Enum<E>)。它们继承了这个Enum中的许多有用的方法
/** * 季节枚举 * @author bin * */public enum SeasonEnum {SPRING,SUMMER,AUTUMN,WINTER;}【注】枚举是一种特殊的类,其构造方法默认是private类型的,当然我们可以覆盖这个默认的空参构造方法,但是也必须是private类型的才行。
SeasonEnum这个枚举非常特殊的类,其中的四个枚举值都是SeasonEnum类的对象:
public class Demo1 {public static void main(String[] args) {SeasonEnum se = SeasonEnum.SPRING;}}而且这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写,当然用小写也没有什么问题,只是有些不走寻常路罢了。那么既然这些枚举值都是枚举类的类实例,那么肯定可以对这些类实例进行更复杂的操作:
public enum SeasonEnum {SPRING("春天"),SUMMER("夏天"),AUTUMN("秋天"),WINTER("冬天");/** * 对季节的描述信息 */private String desc;public String getDesc() {return desc;}private SeasonEnum(String desc){this.desc = desc;}}3.2、常见用法
(1)用在switch中:
enum Signal {GREEN, YELLOW, RED}public class TrafficLight {Signal color = Signal.RED;public void change() {switch (color) {case RED:color = Signal.GREEN;break;case YELLOW:color = Signal.RED;break;case GREEN:color = Signal.YELLOW;break;}}}【注意】在switch中应用枚举,case语句是不加引号的。(2)在枚举中添加新方法:
public enum Color {RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);// 成员变量private String name;private int index;// 构造方法private Color(String name, int index) {this.name = name;this.index = index;}// 普通方法public static String getName(int index) {for (Color c : Color.values()) {if (c.getIndex() == index) {return c.name;}}return null;}// get set 方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}}(3)覆盖枚举方法
public enum Color {RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);// 成员变量private String name;private int index;// 构造方法private Color(String name, int index) {this.name = name;this.index = index;}//覆盖方法@Overridepublic String toString() {return this.index+"_"+this.name;}}(4)实现接口
public interface Behaviour {void print();String getInfo();}public enum Color implements Behaviour{RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);// 成员变量private String name;private int index;// 构造方法private Color(String name, int index) {this.name = name;this.index = index;}//接口方法@Overridepublic String getInfo() {return this.name;}//接口方法@Overridepublic void print() {System.out.println(this.index+":"+this.name);}}(5)使用接口来组织枚举
public interface Food {enum Coffee implements Food{BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO}enum Dessert implements Food{FRUIT, CAKE, GELATO}}
- 【java基础回顾一】——枚举
- Java基础回顾(一)
- JAVA基础回顾一
- 黑马程序员 java基础回顾---枚举
- java基础回顾(一)
- java基础回顾(一)
- Java基础回顾(一)
- 【java基础回顾】一, java基础类型
- java基础知识回顾——枚举类和注解
- JAVA基础——枚举
- java基础学习:枚举 一
- 黑马程序员——java基础知识回顾(一)(java语言基础组成)
- java 枚举简单回顾
- Java枚举类回顾
- 后台之路(一):java基础回顾
- Java基础回顾随记(一)
- Shell 脚本知识回顾 (一) —— 基础篇
- Shell 脚本知识回顾 (一) —— 基础篇
- 黑苹果驱动]Mac OS X Snow Lepard的内核功能扩展kext大致解析
- CentOS ulimit系统命令修改socket数量限制
- easyUI同步树的详解
- 近4000个图标集,超过20万免费图标下载汇总贴
- linux上安装memcached
- 【java基础回顾一】——枚举
- 从实践中学习Android——高仿QQ登录界面
- 泛型
- GCC链接选项-L,-rpath-link和-rpath
- extjs请求java后台,获取返回数据的方式
- mysql安装
- 十三、国际化
- poj 3254 --- Corn-Fields(状态压缩)
- 寻找Java语言的10个问题解决方法