java基础篇---枚举详解
在JDK1.5之前,JAVA可以有两种方式定义新类型:类和接口,对于大部分面向对象编程,有这两种似乎就足够了,但是在一些特殊情况就不合适。例如:想要定义一个Color类,它只能有Red,Green,Blue三种,其他值则是错误,在JDK1.5之后便引入枚举类型。
枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。
public enum Color{
RED,GREEN,BLUE ; // 定义三个枚举的类型
};
枚举中有三个取值,以后再取的时候,只能从这三个内容取
public class GetEnumContent{
public static void main(String args[]){
Color c = Color.BLUE ; // 取出蓝色
System.out.println(c) ;
}
};
可以直接使用在Switch语句上
public class SwitchPrintEnum{
public static void main(String args[]){
for(Color c:Color.values()){ // 输出枚举中的全部内容
print(c) ;
}
}
public static void print(Color color){
switch(color){
case RED:{
System.out.println("红颜色") ;
break ;
}
case GREEN:{
System.out.println("绿颜色") ;
break ;
}
case BLUE:{
System.out.println("蓝颜色") ;
break ;
}
default:{
System.out.println("未知颜色") ;
break ;
}
}
}
};
使用enum关键字可以定义一个枚举,也可以定义一个Eunm类
枚举类的操作方法:

在枚举已经实现Comparable接口,所以在枚举中的内容可以排序。
案列一
import java.util.Iterator;
import java.util.Set ;
import java.util.TreeSet ;
enum Color{
RED,GREEN,BLUE ;
}
public class ComparableEnum{
public static void main(String args[]){
Set<Color> t = new TreeSet<Color>() ; // 设置类型
t.add(Color.GREEN) ; // 加入绿色
t.add(Color.RED) ; // 加入红色
t.add(Color.BLUE) ; // 加入蓝色
Iterator<Color> iter = t.iterator() ;
while(iter.hasNext()){
System.out.print(iter.next() + "、") ;
}
}
};
案列二
使用EnumMap
import java.util.EnumMap ;
import java.util.Map ;
enum Color{
RED , GREEN , BLUE ;
}
public class EnumMapDemo{
public static void main(String args[]){
Map<Color,String> desc = null ; // 定义Map对象,同时指定类型
desc = new EnumMap<Color,String>(Color.class) ; // 实例化EnumMap对象
desc.put(Color.RED,"红色") ;
desc.put(Color.GREEN,"绿色") ;
desc.put(Color.BLUE,"蓝色") ;
System.out.println("====== 输出全部的内容 ======") ;
for(Color c:Color.values()){
System.out.println(c.name() + " --> " + desc.get(c)) ;
}
System.out.println("====== 输出全部的键值 ======") ;
for(Color c:desc.keySet()){
System.out.print(c.name() + "、") ;
}
System.out.println() ;
System.out.println("====== 输出全部的内容 ======") ;
for(String s:desc.values()){
System.out.print(s + "、") ;
}
}
};
案列三
使用 EnumSet
import java.util.EnumSet ;
enum Color{
RED , GREEN , BLUE ;
}
public class EnumSetDemo{
public static void main(String args[]){
EnumSet<Color> esOld = null ; // 声明一个EnumSet对象
EnumSet<Color> esNew = null ;
System.out.println("======== EnumSet.copyOf(Color.class) =====") ;
esOld = EnumSet.noneOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中
esOld.add(Color.RED) ; // 增加内容
esOld.add(Color.GREEN) ; // 增加内容
esNew = EnumSet.copyOf(esOld) ; // 从已有的集合拷贝过来
print(esNew) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.print(c + "、") ;
}
System.out.println() ;
}
};
java基础篇---枚举详解的更多相关文章
- Java基础之 数组详解
前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...
- java提高篇(十)-----详解匿名内部类
在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始 ...
- java提高篇(八)----详解内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- java基础之:详解内部类(转载)
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- 【转】java提高篇(十)-----详解匿名内部类
原文网址:http://www.cnblogs.com/chenssy/p/3390871.html 在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节 ...
- java提高篇之详解内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- java提高篇(十)-----详解匿名内部类 ,形参为什么要用final
在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始 ...
- 基础篇:详解JAVA对象实例化过程
目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...
- Java基础知识面试题详解(2019年)
文章目录 1. 面向对象和面向过程的区别 2. Java 语言有哪些特点? 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 JVM JDK 和 JRE 4. Oracle JDK 和 Ope ...
随机推荐
- 从前端的UI开始
MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,ViewState这些东 ...
- 【JavaScript】浅析ajax的使用
目录结构: contents structure [+] Ajax简介 Ajax的工作原理 Ajax的使用步骤 使用原生的js代码 使用JQuery代码 JQuery中常用的Ajax函数 $.ajax ...
- Oracle 12C -- 删除audit policy
删除之前,必须将policy disable掉:然后再删除 SQL> noaudit policy audit_sysprvi_po01; SQL> drop audit policy a ...
- 关于埃博拉病毒的基本知识(ABC)
科学研究表明.埃博拉病毒的存在历史很久远,可能有两千多万年的历史,在类人猿出现的时期就已存在. 埃博拉病毒呈现一种"蚕丝状",又细又长,无色透明.直径有80纳米,长短不等,在14微 ...
- Source Insight中代码块注释
转载:http://blog.csdn.net/cindylx422/article/details/7560786 修改工程目录下的utils.em文件,将下面代码添加到末尾,然后将此文件添加到工程 ...
- android Jni NDK开发环境搭建及其简单实例的编写
android Jni NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...
- MySQL复制表结构、表数据
1.复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...
- mysql出现Too many connections的解决...
最近写javaee项目的时候,mysql报了too many connections的错误,百度的内容有一些有问题,所以我重新写一下我的解决方法. mysql -u root -p 回车输入密码进入m ...
- Android SDK Manager详解
Android基础知识——Android SDK Manager详解 做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等. ...
- 设计模式-单例模式(Singleton Pattren)(饿汉模式和懒汉模式)
单例模式(Singleton Pattren):确保一个类在整个应用中只有一个实例,并提供一个全局访问点. 实现要点: 1. 私有化构造方法 2. 类的实例在类初始化的时候创建 3. 提供一个类方法, ...