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. 毕业设计预习:maxplus2入门教程

    maxplus2入门教程 一.安装配置(maxplus2.zip) 下载安装完成后,运行maxstart.exe,显示如下错误提示: 为节省配置工作,在E:盘下新建maxplus2文件夹,仅将所需附加 ...

  2. WEB入门三 CSS样式表基础

    学习内容 Ø        CSS的基本语法 Ø        CSS选择器 Ø        常见的CSS样式 Ø        网页中3种使用CSS的方式 能力目标 Ø        理解CSS的 ...

  3. 预读(读取文件前几行)文件(txt,dat,csv等)程序

    需求: txt.dat.csv文件很大,需要花很长的时间打开, 但实际上我们只需要查看文件的前几行,查看数据的内容和格式 exe & code :  https://github.com/co ...

  4. 在前台jsp页面中取得并使用后台放入域中变量的方法

    定义成 js变量后,在js中也可以自由使用.

  5. 【Asp.net入门02】搭建Asp.net开发环境

    本节主要讲解: 什么是asp.net asp.net开发和运行环境介绍 1.什么是ASP.NET Asp.net不是一种编程语言,而是一种开发技术.我们可以利用这种技术所提供的类库,使用C#或者VB编 ...

  6. Docker swarm 使用服务编排部署lnmp

    一.简介 目的:在Docker Swarm集群中,使用stack服务编排搭建lnmp来部署WordPress 使用私有仓库的nginx和php镜像 mysql使用dockerhup最新镜像 使用nfs ...

  7. python 字符串切片知识巩固

    切片操作(slice)可以从一个字符串中获取子字符串(字符串的一部分).我们使用一对方括号.起始偏移量start.终止偏移量end 以及可选的步长step 来定义一个分片. 格式: [start:en ...

  8. Hadoop部署方式-完全分布式(Fully-Distributed Mode)

    Hadoop部署方式-完全分布式(Fully-Distributed Mode) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本博客搭建的虚拟机是伪分布式环境(https://w ...

  9. Node.js 被分叉出一个项目 — Ayo.js,肿么了

    (注:ayo.js叉从Node.js.目前,大量的文档仍然指向Node.js库.) ayo.js是一个JavaScript运行时建立在Chrome的V8 JavaScript引擎.ayo.js使用事件 ...

  10. 转:iOS-CoreLocation:无论你在哪里,我都要找到你!

    1.定位 使用步骤: 创建CLLocationManager示例,并且需要强引用它 设置CLLocationManager的代理,监听并获取所更新的位置 启动位置更新 1 2 3 _manager = ...