java基础之特殊类枚举

一、什么是枚举

枚举是JDK5新增特性,用来表示一组常量值,比如一年由四个季节,一年中有12个月份,、订单有未付款​、已付款、已发货、已收货状态等。

二、枚举的好处

​用枚举来表示组常量值,可以避免非法值。

public class Test1 {public static void main(String[] args) {Emp emp1 = new Emp("张三", Constants.EMP_GRADE_A);Emp emp2 = new Emp("李四", Constants.EMP_GRADE_B);//不能限制住Emp emp3 = new Emp("李四", 5);}
}//常量类
class Constants {public static final int EMP_GRADE_A = 1;public static final int EMP_GRADE_B = 2;public static final int EMP_GRADE_C = 3;
}//员工类
class Emp{private String name;private Integer grade;public Emp() {}public Emp(String name, Integer grade) {this.name = name;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getGrade() {return grade;}public void setGrade(Integer grade) {this.grade = grade;}public String toString() {return "Emp{name = " + name + ", grade = " + grade + "}";}
}

public class Test2 {public static void main(String[] args) {Student stu1 = new Student("zhangsan", GradeEnum.A);//能限制住// Student stu2 = new Student("zhangsan", 5);}
}enum GradeEnum {A,B,C;
}class Student{private String name;private Enum grade;public Student() {}public Student(String name, Enum grade) {this.name = name;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Enum getGrade() {return grade;}public void setGrade(Enum grade) {this.grade = grade;}public String toString() {return "Emp1{name = " + name + ", grade = " + grade + "}";}
}

三、定义格式

格式:

public enum s {枚举1,枚举2,枚举3;
}
注:定义枚举要使用关键menu

 示例代码:

//定义一个枚举类,用来表示春夏秋冬四个固定值
public menu season{SPRING,SUMMER,AUTUMN,WINTER;
​}

四、枚举的特点

  • 所有枚举类都是java.lang.Enum的子类

  • 我们可以通过枚举类名.枚举项名称来访问指定的枚举项。

  • 每一个枚举项其实就是该枚举的一个对象

  • 枚举也是一个类,可以去定义成员变量

  • 枚举类的第一行必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,​这个分号就不能省略。

  • 枚举类可以有构造器,但是必须的private(默认)
    枚举类可以有抽象方法,但是枚举项必须重写该方法

public enum Season {SPRING("春"){//如果枚举类中有抽象方法//那么在枚举项中必须要全部重写@Overridepublic void show() {System.out.println(this.name);}},SUMMER("夏"){@Overridepublic void show() {System.out.println(this.name);}},AUTUMN("秋"){@Overridepublic void show() {System.out.println(this.name);}},WINTER("冬"){@Overridepublic void show() {System.out.println(this.name);}};public String name;//空参构造//private Season(){}//有参构造private Season(String name){this.name = name;}//抽象方法public abstract void show();
}public class EnumDemo {public static void main(String[] args) {/*1.所有枚举类都是Enum的子类2.我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项3.每一个枚举项其实就是该枚举的一个对象4.枚举也是一个类,也可以去定义成员变量5.枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略6.枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举("");7.枚举类也可以有抽象方法,但是枚举项必须重写该方法*///第二个特点的演示//我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.AUTUMN);System.out.println(Season.WINTER);//第三个特点的演示//每一个枚举项其实就是该枚举的一个对象Season spring = Season.SPRING;}
}

 枚举的方法

public enum Season {SPRING,SUMMER,AUTUMN,WINTER;
}public class EnumDemo {public static void main(String[] args) {
//        String name() 获取枚举项的名称String name = Season.SPRING.name();System.out.println(name);System.out.println("-----------------------------");//        int ordinal() 返回枚举项在枚举类中的索引值int index1 = Season.SPRING.ordinal();int index2 = Season.SUMMER.ordinal();int index3 = Season.AUTUMN.ordinal();int index4 = Season.WINTER.ordinal();System.out.println(index1);System.out.println(index2);System.out.println(index3);System.out.println(index4);System.out.println("-----------------------------");//        int compareTo(E o) 比较两个枚举项,返回的是索引值的差值int result = Season.SPRING.compareTo(Season.WINTER);System.out.println(result);//-3System.out.println("-----------------------------");//        String toString()   返回枚举常量的名称String s = Season.SPRING.toString();System.out.println(s);System.out.println("-----------------------------");//        static <T> T valueOf(Class<T> type,String name)
//        获取指定枚举类中的指定名称的枚举值Season spring = Enum.valueOf(Season.class, "SPRING");System.out.println(spring);System.out.println(Season.SPRING == spring);System.out.println("-----------------------------");//        values()       获得所有的枚举项Season[] values = Season.values();for (Season value : values) {System.out.println(value);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/12031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

# 从浅入深 学习 SpringCloud 微服务架构(十八)

从浅入深 学习 SpringCloud 微服务架构&#xff08;十八&#xff09; 一、开源配置中心 Apollo&#xff1a;概述 1、开源配置中心 Apollo Apollo -A reliable configuration management system Apollo(阿波罗)是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理…

一篇文章告诉你:通信网优比计算机岗位好在哪?

据优橙2023年就业人员专业分布统计&#xff0c;通信专业学员占比32.7%&#xff0c;非通信专业学员占比64.8%&#xff0c;其他占比2.5%。 可见从事网优的学员中大部分为非通信专业。而非通信专业中72%的学生在学习通信网优还是计算机专业中&#xff0c;选择了通信网优。 为什么越…

解决:el-image标签嵌套在table中样式穿透

el-image标签嵌套在table中样式穿透 ::v-deep .el-table__cell {position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 }

聚焦光量子应用开发!Quandela 发布新版量子计算云服务

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1200字丨5分钟阅读 摘要&#xff1a;法国光量子计算公司 Quandela宣布推出新版量子计算云服务 Quandela Cloud 2.0&#xff0c;通过创新技术确保量…

很难找到全的!150个软件测试领域专业术语汇总

1. 单元测试&#xff08;Unit Testing&#xff09;&#xff1a;对软件中的最小功能单元&#xff08;通常是函数或方法&#xff09;进行测试&#xff0c;以验证其是否按预期工作。 2. 集成测试&#xff08;Integration Testing&#xff09;&#xff1a;测试不同模块之间的交互…

编程经验总结

1.一个变量在一个函数里&#xff0c;但另一个函数也想用这个变量。 解决&#xff1a;那就把这个变量拿出来去作全局变量。

Python 运筹优化13 Thompson Sampling 解读

说明 这部分应该是Multi-Armed Bandit的最后一部分了。 内容 1 On Line Ads 这个实验&#xff0c;最初的目的就是为了选出最佳的广告。首先&#xff0c;通过伯努利分布&#xff0c;模拟了某个广告的有效率。在真实场景里&#xff0c;我们是无法知道那个广告更好的。可能在t…

kafka安装部署

kafka 官网下载&#xff1a; kafka https://downloads.apache.org/kafka/3.7.0/zookeeper https://downloads.apache.org/zookeeper/ run kafkazookeeper&#xff0c;conf目录下创建zoo.cfg&#xff0c;运行bin目录下的zkServer脚本文件 kafka eagle 参考&#xff1a;htt…

java springboot连接sqlserver使用

pom.xml增加sqlserver驱动 <dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>9.4.0.jre8</version></dependency>application.yml配置文件 server:port: 9001 #spring: …

sklearn.preprocessing.normalize()

sklearn.preprocessing.normalize()是Scikit-learn库中的一个函数&#xff0c;用于对特征向量进行归一化处理。归一化的目的是将每个样本的特征向量缩放到单位范数&#xff08;即长度为1&#xff09;。 normalize函数的主要参数包括&#xff1a; X&#xff1a;要归一化的数组…

【Vue】vue项目中使用百度地图教程

在Vue项目中显示百度地图&#xff0c;你需要遵循以下步骤&#xff1a; 1. 注册百度开发者账号并获取API密钥2. 在Vue项目中引入百度地图API3.在Vue组件中创建地图容器4. 在Vue组件中初始化地图5. 添加其他地图组件&#xff08;可选&#xff09;6. 处理地图事件&#xff08;可选…

C# 结构体数组内指定字段的升序、降序排列

目录 实现目标 结构体定义 升序排列 方法一&#xff1a;使用Array.Sort配合自定义比较器 方法二&#xff1a;使用LINQ的OrderBy 降序排列 方法一&#xff1a;使用Array.Sort配合自定义比较器 方法二&#xff1a;使用LINQ的OrderBy 实现目标 要对结构体数组按照其成员字…

【Power BI】DAX语言 VS Power Query M语言

DAX&#xff08;Data Analysis Expressions&#xff09;和Power Query M语言是Microsoft Power BI和Excel中的两种强大的数据处理和分析工具。尽管它们在许多方面都有重叠之处&#xff0c;特别是用于数据建模和数据转换&#xff0c;但它们在用途、语法和功能上有显著的区别。本…

CSPM是否可以申请职称?解答来了

在当今项目管理领域&#xff0c;PMP证书与CSPM证书都是备受认可的专业证书。CSPM证书不等于职称&#xff0c;不过CSPM证书有国家标准作为背书&#xff0c;《项目管理专业人员能力评价要求》国家标准可作为各省市区县开展项目管理专业人才引进、培养、职称评定和任用等工作的依据…

嵌入式单片机笔试题

DC-DC 和 LDO两者有何区别&#xff1f; DC-DC转换器&#xff08;直流-直流转换器&#xff09;和LDO&#xff08;低压差线性稳压器&#xff09;都是用于电源管理的设备&#xff0c;但它们在原理和特性上有一些显著的区别&#xff1a; 原理&#xff1a; DC-DC转换器通过改变输…

Linux 第二十七章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

格式化容量或速度

枚举 StorageSpeedUnit enum StorageSpeedUnit{NUMERIC,STORAGE,SPEED; }日志 Loggable public static void logger(String pattern,Object... paramArray) {String cls MethodHandles.lookup().lookupClass().getName();System.Logger logger System.getLogger(cls);Strin…

Python实战开发及案例分析(19)—— 推荐算法

推荐系统是一种信息过滤系统&#xff0c;它的目标是预测用户对物品的偏好程度。在Python中&#xff0c;我们可以使用多种技术来实现推荐算法&#xff0c;包括基于内容的推荐、协同过滤推荐以及利用机器学习模型的混合推荐系统。 基本类型的推荐系统 基于内容的推荐系统&#…

输电线路的覆冰

给出一些输电线路的覆冰类型 输电线路的覆冰类型可以根据其形成机理、条件及性质进行不同的分类。以下是一些主要的覆冰类型&#xff1a; 凝华覆冰&#xff1a;这种覆冰是近地表面空气中的水分因气温过低而直接凝结在输电线路表面的一种霜&#xff0c;也被称为晶状雾凇。云中…

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦&#xff1a; 华秋&#xff1a; 背胶&#xff1a; FPC板背胶是可以粘接在光滑表面的一种薄型胶带&#xff0c;可以在狭小以及光滑的表面上用来提供高…