java学习之枚举二

news/2024/12/29 12:54:36/

目录

一、enum关键字实现枚举

二、注意事项

一、对Season2进行反编译(javap)

​编辑

 三、练习题

第一题

第二题


一、enum关键字实现枚举

package enum_;public class Enumeration03 {public static void main(String[] args) {System.out.println(Season2.SPRING);System.out.println(Season2.AUTUMN);}
}
//演示使用enum关键字来实现枚举
enum Season2{//定义了四个对象//public static final修饰,因为是final修饰,所以必须是大写
//    public static final  Season2 SPRING =  new Season2("春天", "温暖");
//    public static final  Season2 WINTER =  new Season2("冬天", "寒冷");
//    public static final  Season2 SUMMER = new Season2("夏天", "炎热");
//    public static final  Season2 AUTUMN = new Season2("秋天", "凉爽");//如果使用了enum关键字来实现枚举//1.使用关键字 enum 来替代class//2.SPRING("春天", "温暖");  常量名/对象名(实参列表);//3.如果有多个常量(对象),使用逗号间隔即可//4.如果使用enum来实现枚举,要求将定义的对象,写在前面SPRING("春天", "温暖"),WINTER("冬天", "寒冷"),SUMMER("夏天", "炎热"),AUTUMN("秋天", "凉爽");//属性要放在枚举的对象的下面private String name;private String desc;//描述private Season2(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season2{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

如果使用了 enum 来实现枚举类
1. 使用关键字 enum 替代 class
2. public static final Season SPRING = new Season("春天", "温暖") 直接使用SPRING("春天", "温暖")     解读   常量名(实参列表)
3. 如果有多个常量(对象), 使用 ,号间隔即可
4. 如果使用 enum 来实现枚举, 要求将定义常量对象, 写在前面

二、注意事项

一、对Season2进行反编译(javap)

使用enum关键字开发一个枚举类是,默认会继承Enum类,用javap来证明(反编译)

 1.Season2是一个final类

2.定义的四个对象本质还是public static final修饰的

如果我们使用的是无参构造器, 创建常量对象, 则是常量名(),并且可以省略 ()

package enum_;public class Enumeration03 {public static void main(String[] args) {System.out.println(Season2.SPRING);System.out.println(Season2.AUTUMN);}
}
//演示使用enum关键字来实现枚举
enum Season2{//定义了四个对象//public static final修饰,因为是final修饰,所以必须是大写
//    public static final  Season2 SPRING =  new Season2("春天", "温暖");
//    public static final  Season2 WINTER =  new Season2("冬天", "寒冷");
//    public static final  Season2 SUMMER = new Season2("夏天", "炎热");
//    public static final  Season2 AUTUMN = new Season2("秋天", "凉爽");//如果使用了enum关键字来实现枚举//1.使用关键字 enum 来替代class//2.SPRING("春天", "温暖");  常量名/对象名(实参列表);//3.如果有多个常量(对象),使用逗号间隔即可//4.如果使用enum来实现枚举,要求将定义的对象,写在前面//5. 如果我们使用的是无参构造器, 创建常量对象, 则可以省略 ()SPRING("春天", "温暖"),WINTER("冬天", "寒冷"),SUMMER("夏天", "炎热"),AUTUMN("秋天", "凉爽"),//WHAT()调用的无参构造器,可以省略()//WHAT()的原型是public static final Season2 WHAT = new Season2();WHAT;//属性要放在枚举的对象的下面private String name;private String desc;//描述private Season2(){//无参构造器}private Season2(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season2{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}
 

 三、练习题

第一题

以下代码是否正确?

 答案:正确的,在Gender类中隐藏着无参构造器,BOY和GIRL的完整写法是

public static final Gender BOY = new Gender();
public static final Gender GIRL = new Gender();

如果定义了有参构造器,那么上述代码就是错误的,需要显式的定义无参构造器

第二题

写出以下代码的输出结果

package enum_;public class EnumExercise01 {public static void main(String[] args) {Gender boy = Gender.BOY;Gender boy2 = Gender.BOY;System.out.println(boy);System.out.println(boy2);boy.hi();System.out.println(boy2 == boy);}
}
enum Gender{BOY,GIRL;public void hi(){System.out.println(BOY);}}

输出结果

 分析:

package enum_;public class EnumExercise01 {public static void main(String[] args) {Gender boy = Gender.BOY;//调用Gender类的对象BOYGender boy2 = Gender.BOY;//再次调用对象BOYSystem.out.println(boy);//调用Gender的父类Enum的toString()方法,返回BOY/*public String toString() {return name;}*/System.out.println(boy2);boy.hi();System.out.println(boy2 == boy);//两者指向同一对象,true}
}
enum Gender{//1.创建两个Gender类的对象实例,名字分别为BOY何GIRL,没有实参//2. public static final Gender BOY = new Gender();//3. public static final Gender GIRL = new Gender();BOY,GIRL;public void hi(){System.out.println(BOY);}}


http://www.ppmy.cn/news/60313.html

相关文章

M1 Mac配置JAVA环境

1、下载JDK 目前JDK有Oracle的JDK还有zulu的Open JDK可供选择,因为需要JAVA1.8所以下文以zulu的JDK为例。 Zulu官网:https://www.azul.com/downloads/?packagejdk 选择所需的JDK版本(注意选择ARM架构)> 下载.dmg包 > 安装 …

【地铁上的设计模式】--结构型模式:装饰器模式

什么是装饰器模式 装饰器模式是一种结构型设计模式,它允许你通过将对象放入包含行为的特殊封装对象中来为原对象添加新的行为,同时又不改变原有对象的结构。装饰器模式中,包装器对象和被包装对象实现了相同的接口,因此客户端无需…

关于数据倾斜

1、数据倾斜表现 1.1 hadoop中的数据倾斜表现 有一个多几个Reduce卡住,卡在99.99%,一直不能结束。各种container报错OOM异常的Reducer读写的数据量极大,至少远远超过其它正常的Reducer伴随着数据倾斜,会出现任务被kill等各种诡异…

视觉震撼的数据可视化示例

众所周知,数据可以非常强大——当你真正理解它告诉你什么时。 数据和信息可视化(数据可视化或信息可视化)是对大量复杂的定量、定性数据、信息进行设计和创建易于沟通、易于理解的图形或视觉表示的实践,在静态、动态或交互式视觉项目的帮助下&#xff0…

UE动画状态机的事件触发顺序测试

正常A状态过渡到B状态的事件顺序: 整个流程为: 调用B状态的On Become Relevant事件调用B状态的On Update事件调用A状态的Left State Event事件调用B状态的Entered State Event事件调用B状态的Start Transition Event事件调用B状态的End Transition Even…

git代码管理操作全流程之一: 提交、更新、解决冲突、合并等操作

使用 Git 提交代码步骤 Step 1,检查自己的代码改动。执行 git commit -am"" 提交到本地仓库。注意写好准确的描述信息。 Step 2,执行 git pull --rebase,将当前分支的代码更新到远程仓库的最新版本。如果有冲突解决冲突。解决git…

几种常见时间复杂度实例分析

多项式量级 常量阶 O(1) 对数阶 O(logn) 线性阶 O(n) 线性对数阶 O(nlogn) 平方阶O(n2 ),立方阶O(n3 )...k次方阶O(nk) 非多项式量级(NP(Non-Deterministic Polynomial,非确定多项式)问题) 指数阶O(2n) 阶乘阶…

“裸奔”时代下,我们该如何保护网络隐私?

当我们在互联网上进行各种活动时,我们的个人信息和数据可能会被攻击者窃取或盗用。为了保护我们的隐私和数据安全,以下是一些实用的技巧和工具,可以帮助您应对网络攻击、数据泄露和隐私侵犯的问题: 使用强密码:使用独特…