网站首页 > 精选教程 正文
课程重点:
- 枚举的基本定义
- 枚举的基本使用
11.1. 枚举的简介
11.1.1. 枚举的概念
枚举也是一种自定义的数据类型, 是一个引用数据类型。 枚举经常用来被描述一些取值范围有限的数据。
例如:
- 性别: 只有两个值, 此时可以用枚举来表示
- 月份: 只有12个值, 此时可以用枚举来表示
- 星期: 只有七个值, 此时可以用枚举来表示
11.2. 枚举的基本定义和使用
11.2.1. 枚举的定义
定义枚举类型, 需要使用到关键字 enum 。 枚举的名字是一个标识符, 遵循大驼峰命名法。
/**
* @Description 枚举的定义
*/
public enum Gender {
// 将这个枚举对象所有可能取到的值, 都列出来
// 枚举中的元素, 也是标识符, 遵循大驼峰命名法
Male, Female
}
public enum Month {
Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
}
public enum Week {
Mon, Tue, Wed, Thu, Fri, Sat, Sun
}
11.2.2. 枚举的使用
枚举是一种自定义的数据类型, 可以声明变量。 在使用的时候, 直接使用枚举类型.枚举值这样的形式进行枚举值的获取。
/**
* @Description 枚举的使用
*/
public class Test {
public static void main(String[] args) {
// 枚举的使用
Gender gender1 = Gender.Male;
Gender gender2 = Gender.Female;
Month m1 = Month.Jan;
Month m2 = Month.Nov;
Week week1 = Week.Sat;
}
}
11.3. 枚举中的成员定义
11.3.1. 枚举的分析
枚举,其实可以认为是Object类的一个最终子类。 不能被其他的类、枚举继承。
/**
* @Description 枚举的使用
*/
public class EnumTest {
public static void main(String[] args) {
// 1. 获取一个枚举对象
Gender gender = Gender.Male;
// 1.1. 证明方式1: 枚举对象,可以调用Object类中的方法,说明这些方法是从Object类中继承到的。
String str = gender.toString();
// 1.2. 证明方式2: 可以向上转型为 Object 类型。
Object obj = gender;
}
}
enum Gender {
Male, Female
}
11.3.2. 枚举中的属性定义
/**
* @Description 枚举的属性定义
*/
public enum Gender {
Male, Female;
// 1. 在枚举中定义属性、方法、构造方法... 是需要写在枚举元素的下方!
// 如果需要在枚举中定义成员,需要在最后一个枚举元素后面添加一个分号。
public String desc;
}
11.3.3. 枚举中的构造方法定义
/**
* @Description 枚举的构造方法定义
*/
public class Test2 {
// 为了防止和当前包中的Gender枚举重复,在这里写成了静态内部枚举
private static enum Gender {
// 其实,所谓枚举中的元素,其实就是一个静态的、当前类的对象。
Male("男"), Female("女");
// 添加属性
private String desc;
// 添加构造方法,为这个属性赋值
// 在枚举中定义构造方法,一般情况下,只是在当前的枚举中使用
// 所以,枚举的构造方法,一般情况下,权限都是私有的
Gender(String desc) {
this.desc = desc;
}
}
public static void main(String[] args) {
// 1. 枚举对象的获取
Gender gender = Gender.Male;
}
}
11.3.4. 枚举中的方法定义
/**
* @Description 枚举的方法定义
*/
public enum Gender {
Male, Female;
// 1. 在枚举中定义属性、方法、构造方法... 是需要写在枚举元素的下方!
// 如果需要在枚举中定义成员,需要在最后一个枚举元素后面添加一个分号。
public String desc;
// 2. 定义方法
public void show() {
System.out.println("枚举中的方法定义");
}
public static void display() {
System.out.println("枚举中的静态方法的定义");
}
}
11.3.5. 枚举中的方法重写
/**
* @Description 方法重写
*/
private static enum Gender {
// 其实,所谓枚举中的元素,其实就是一个静态的、当前类的对象。
Male("男"), Female("女");
// 添加属性
private String desc;
// 添加构造方法,为这个属性赋值
// 在枚举中定义构造方法,一般情况下,只是在当前的枚举中使用
// 所以,枚举的构造方法,一般情况下,权限都是私有的
Gender(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return this.desc;
}
}
11.3.6. 枚举实现接口
/**
* @Description 接口实现
*/
enum Gender implements MyInterface {
@Override
public void test() {
System.out.println("接口中的方法");
}
}
interface MyInterface {
void test();
}
11.3.7. 枚举值
/**
* @Description 枚举值
*/
enum Gender implements MyInterface {
// 其实,所谓枚举中的元素,其实就是一个静态的、当前类的对象。
Male("男") {
// 这里,其实就相当于是一个匿名内部类
// 在这里,可以重写Gender中的方法
@Override
public void test() {
System.out.println("Male的重写实现");
}
},Female("女");
// 添加属性
private String desc;
// 添加构造方法,为这个属性赋值
// 在枚举中定义构造方法,一般情况下,只是在当前的枚举中使用
// 所以,枚举的构造方法,一般情况下,权限都是私有的
Gender(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return this.desc;
}
@Override
public void test() {
System.out.println("接口中的方法");
}
}
猜你喜欢
- 2024-11-09 Java基础入门要学哪些 怎么掌握反射和枚举
- 2024-11-09 谈谈枚举的新用法--java java枚举类型有什么用
- 2024-11-09 Java面试基础回顾16-枚举 java面试基础知识点
- 2024-11-09 实际工作中推荐使用java枚举类型,提高开发效率#编程
- 2024-11-09 java枚举enumeration java枚举根据value获取key
- 2024-11-09 大年初二来简单聊聊java中枚举类的前世今生
- 2024-11-09 如何用枚举消除if/else?-枚举高阶用法
- 2024-11-09 干货 | 一文搞定Python 枚举 python 枚举遍历
- 2024-11-09 Scala学习九之枚举和Trait了解 枚举compareto
- 2024-11-09 java中的enum第一期:enum存在的意义
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)