1、概述

枚举:一些方法在运行时,它需要数据不能是任意的,而必须是一定范围内的值,可以使用枚举解决

2、枚举的格式

enum 类名{
枚举值
}

例子

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
enum Sex{//枚举类
//相当于:public static final Sex man=new Sex("男");
man("男") {
@Override
public void run() {
System.out.println("男人正在跑步");
}
//相当于:public static final Sex woman=new Sex("女");
},woman("女") {
@Override
public void run() {
System.out.println("女人正在游泳");
}
};
String value;
private Sex(String value){
this.value=value;
}
//成员函数
public void getValue(){
System.out.println("Value:"+value);
}
public abstract void run();
} public class Demo2 {
public static void main(String[] args) {
Sex sex=Sex.man;//获取枚举类对象
sex.value="男";
sex.getValue(); //返回值:男
sex.run(); //返回值:男人正在跑步
}
}

3、枚举要注意的细节(上面例子的总结)

1.枚举类也是一个特殊的类.
   2.枚举值默认的修饰符是public static final
   3.枚举值就是枚举值所属的类的类型,枚举值指向的是本类的对象
   4.枚举类构造方法默认修饰符private
   5.枚举类可以定义自己的成员变量与成员函数
   6.枚举类可以定义自己的构造函数,单是构造函数修饰符必须是private
   7.枚举类可以存在抽象的方法,但是枚举值必须去实现抽象方法
   8.枚举值必须要位于枚举类的第一个语句

4、实例

需求:定义一个用户的性别不能随意更改/实例化

方式1:(不用枚举)

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
class Gender{ //自定义一个性别类
String value;
public static final Gender man=new Gender("男");
public static final Gender woman=new Gender("女"); private Gender(String value){
this.value=value;
}
} class Person{//人员类
private String name;
private Gender sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex=sex;
}
} public class Demo1 {
public static void main(String[] args) {
Person p=new Person();
p.setName("张三");
p.setSex(Gender.woman);
System.out.println("姓名:"+p.getName()+"\t,"+p.getSex().value);//返回值:姓名:张三 ,女
}
}

方式2:(用了枚举)

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
enum Gender{ //枚举类
man("男"),woman("女");
String value;
private Gender(String value){
this.value=value;
}
} class Person{//人员类
private String name;
private Gender sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex=sex;
}
} public class Demo1 {
public static void main(String[] args) {
Person p=new Person();
p.setName("张三");
p.setSex(Gender.woman);
System.out.println("姓名:"+p.getName()+"\t,"+p.getSex().value);//返回值:姓名:张三 ,女
}
}

附:

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
/*
* switch适用的数据类型:byte\short\int\char\String\枚举类型
*
* 注意:
* case后面跟的是枚举值,只需要单写枚举值即可,不需要在声明该枚举值是属于哪个枚举类的.
* */
enum Season{
spring("春季"),summer("夏季"),autumn("秋季"),winter("冬季季"); String value;
private Season(String value) {
this.value = value;
}
} enum Persons{
student("张三"),worker("劳动者"); String values;
private Persons(String values) {
this.values = values;
}
} public class Demo3 {
public static void main(String[] args) {
Season season = Season.summer;
Persons person = Persons.student;
Persons persons = Persons.worker;
switch (season) {
case spring:
System.out.println(season.value+",春暖花开..."+person.values+"是个"+persons.values);
break;
case summer:
System.out.println(season.value+",荷塘月色..."+person.values+"是个"+persons.values);
break;
case autumn:
System.out.println(season.value+",果实累累..."+person.values+"是个"+persons.values);
break;
case winter:
System.out.println(season.value+",银装素裹....."+person.values+"是个"+persons.values);
break;
}
}
}

运行结果图

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9210345.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

java基础41 枚举(类)的更多相关文章

  1. Java 基础 enum枚举类 的创建/使用/接口继承 ,以及手动创建枚举类的对象为:public static final

    笔记: import java.lang.*; /**一:枚举类 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在S ...

  2. 【Java基础】枚举类与注解

    枚举类与注解 枚举类的使用 当需要定义一组常量时,强烈建议使用枚举类. 枚举类的理解:类的对象只有有限个,确定的. 若枚举只有一个对象, 则可以作为一种单例模式的实现方式. 枚举类的属性: 枚举类对象 ...

  3. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  4. 黑马程序员:Java基础总结----枚举

    黑马程序员:Java基础总结 枚举   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 枚举 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别 ...

  5. Java基础之枚举

    Java基础之枚举 作为1.5才增加的特性,枚举的使用并不是很多. 枚举其实就是一个比较特殊的类,就如同注解其实也是个特殊的接口一样(注解反编译之后没有了@符号).枚举使用enum关键字声明,通过反编 ...

  6. JAVA中的枚举类

    某些情况下一个类的对象是有限而且固定的,例如性别就只有两个类(考虑大众情况).因此这种实例有限而且固定的类,java里面叫枚举类.枚举类的关键字是enum,一些基本的命名规则和文件命名等细节和一般的类 ...

  7. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  8. Java基础之File类的使用

    Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...

  9. Java基础之枚举类型Enum的使用

    Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...

随机推荐

  1. CentOS安装oracleJDK

    实践证明,oracleJDK比openJDK快不止一星半点,换了之后立马从满负载降到个位数负载. 1.卸载openjdk # rpm -qa | grep -E '^(java|jdk)' # yum ...

  2. 图像处理之色彩转换(CCM)

    1 色彩校正原理 人眼对色彩的识别,是基于人眼对光谱存在三种不同的感应单元,不同的感应单元对不同波段的光有不同的响应曲线的原理,通过大脑的合成得到色彩的感知.  一般来说,我们可以通俗的用 RGB三基 ...

  3. Rancher Server HA的高可用部署实验-学习笔记

    转载于https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署实验-学习笔记 一.机器 ...

  4. Azure 上SQL Database(PaaS)Time Zone时区问题处理(进阶篇)

    通常ISV在面对本地客户时对时间相关的处理,一般都时区信息都是不敏感的.但是现在云的世界里为了让大家把时间处理的方式统一起来,云上的服务都是以UTC时间为准的,现在如果作为一个ISV来说就算你面对的客 ...

  5. js判断当前浏览器是pc端还是移动端

    根据用户的访问设备的不同来显示不同的页面样式,主要是判断移动设备还是电脑浏览器访问的. 下面给出js判断处理代码,以作参考. <script type="text/javascript ...

  6. Mongodb 笔记02 创建、更新和删除文档

    创建.更新和删除文档          1. 插入并保存: 1). 单条插入,insert : db.foo.insert({"bar":"baz"}) 2). ...

  7. 八、Kafka总结

    一 Kafka概述 1.1 Kafka是什么 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算. 1)Apache Kafka是一个开源消息系统,由Scala写成. ...

  8. Maven项目中通过profile定义使不同环境使用不同配置信息

    profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果.比如 ...

  9. iOS AES128 CBC No Padding加密解密

    最近的项目中数据传输用到加密,项目选择了AES128 CBC No Padding加密方式,PHP和Android方面的代码网上太多了.但是唯独没有iOS的,但是也有别的写法,但不是是AES128 C ...

  10. 20155301 2016-2017-2 《Java程序设计》第6周学习总结

    20155301 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 1.串流设计,在数据来源与目的地之间,简介两者的是串流对象,在来源于目的地都不知道的情况下, ...