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. 【bzoj3573】 Hnoi2014—米特运输

    http://www.lydsy.com/JudgeOnline/problem.php?id=3573 (题目链接) 题意 题意是这道题最大的难点→_→ Solution 沙茶树形dp,考虑一定会存 ...

  2. centos_radhat升级系统

    Centos/Redhat系统下,Yum升级操作系统版本方法: 很多情况下,系统安装的时候是一个版本,官方很快就会出新的版本,提高系统的安全性,以及一些漏洞补丁 通过以下步骤可以平滑将系统升级,例如C ...

  3. 解题:POI 2011 Strongbox

    首先洛谷的题面十分的劝退(至少对我这个菜鸡来说是这样),我来解释一下(原来的英文题面): 有一个有若干个密码(每个密码都可以开箱子)的密码箱,密码是在$0$到$n-1$的数中的,且所有的密码都满足一个 ...

  4. MySQL 第四篇:数据操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  5. 什么是Docker并且它为什么这么受欢迎

    什么是Docker (why it's so hot than hot) Docker是一个使用容器来方便快捷的创建,部署,运行程序的工具,容器允许开发人员将应用程序的一切打包(镜像),例如库和其他的 ...

  6. Ansible6:Playbook简单使用

    目录 一个简单的示例 通过Playbook安装apache示例 playbook的构成 Hosts和Users 任务列表和action handlers tags 示例 ansbile-playboo ...

  7. 使用 Dojo 掌握面向对象开发

    原文出处:Joe Lennon 从头开始学习 Dojo,第 2 部分 使用 Dojo 掌握面向对象开发 什么是面向对象开发? 面向对象编程(Object-Oriented Programming,OO ...

  8. [Java] 集合框架原理之一:基本结构与源码分析

    一.Collection Collection 接口定义了一些基本的方法: int size(); boolean isEmpty(); boolean add(E e); boolean addAl ...

  9. urllib2模块初体验———豆瓣读书页面下载小爬虫

    我也是根据:http://blog.csdn.net/pleasecallmewhy/article/details/8927832 ,来写出豆瓣读书的爬虫,废话不说直接上代码: #!/usr/bin ...

  10. ASP.NET中常用输出JS脚本的类(来自于周公博客)

    using System; using System.Collections.Generic; using System.Text; using System.Web; using System.We ...