枚举【enumeration】

枚举是一组常量的集合;

属于一种特殊的类,里面只包含一组有限的特定的对象;

自定义类实现枚举——应用

  1. 不需要提供 setxxx 方法,因为枚举对象值通常为只读

  2. 对枚举对象/属性使用 final+static 共同修饰,实现底层优化;

  3. 枚举对象名通常使用全部大写,常量的命名规范;

  4. 枚举对象根据需要,也可以有多个属性;

public class Enumeration_01 {public static void main(String[] args) {System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.AUTUMN);System.out.println(Season.WINNER);}
}
class Season{private String  name;private String  desc;//第三:在Season内部 定义四个固定的枚举对象;public static final Season SPRING=new Season("春天","舒服");public static final Season SUMMER=new Season("夏天","炎热");public static final Season AUTUMN=new Season("秋天","凉爽");public static final Season WINNER=new Season("冬天","寒冷");//第一:构造器私有化,防止直接new对象出来;private Season(String name, String desc) {this.name = name;this.desc = desc;}//第二不设置set方法;防止属性被修改;public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

小结:

  1. 构造器私有化

  2. 类内部创建一组对象;

  3. 对外暴露对象【即:public static final修饰】

  4. 提供get方法,不提供set方法;

枚举类

使用关键字enum时,会隐式的继承Enum类、不能再extends其他类;

说明

第一:使用enum来代替class;

第二:public static final Season SPRING=new Season("春天","舒服")————>>SPRING ("春天","舒服")

第三:多个常量,用逗号 ,隔开

第四:如果使用enum来实现枚举。要求将定义常量对象,写在前面;

第五:如果我们使用的是无参构造器,创建常量对象,可以省略();

package com.cc.Enumeration_02;
public class Enumeration_02 {public static void main(String[] args) {System.out.println(Season2.SPRING);System.out.println(Season2.SUMMER);System.out.println(Season2.AUTUMN);System.out.println(Season2.WINNER);}
}
//枚举类enum
//第一:使用enum来代替class;
enum Season2{
//第二:public static final Season SPRING=new Season("春天","舒服");
//改写:————>>SPRING ("春天","舒服")
//第三:多个常量,用逗号  ,隔开
//第四:如果使用enum来实现枚举。要求将定义常量对象,写在前面;
//第五:如果我们使用的是无参构造器,创建常量对象,可以省略();SPRING ("春天","舒服"),SUMMER("夏天","炎热"),AUTUMN("秋天","凉爽"),WINNER("冬天","寒冷"),What();//也可写出What;private String  name;private String  desc;//无参构造器private Season2(){
​}private Season2(String name, String desc) {this.name = name;this.desc = desc;}//第二不设置set方法;防止属性被修改;public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

enum常用方法

练习 

public class Enumeration_exercise01 {public static void main(String[] args) {//获取枚举的所有对象,就是一个数组Week[] weeks = Week.values();//遍历取出,//增强的for循环,每次从weeks取出,直到嘴后一个取完结束;for(Week week:weeks){System.out.println(week);//输出week;}}
}
//声明枚举类Week
enum Week {MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三"),THURSDAY("星期四"),FRIDAY("星期五"),STAURDAY("星期六"),SUNDAY("星期日");private String name;public String getName() {return name;}private  Week(String name) {this.name = name;}@Overridepublic String toString() {return   name;}
}

可以用来实现接口:

public class demo {public static void main(String[] args) {a.Q.y();//实现接口}
}
interface c{    public void y();}//接口c
enum a implements c{Q("QQ号") ;private String q;public void y(){System.out.println("123123131");};a(String q) {this.q = q;}
}

注解【annotation】

说明:

注解也被称为元数据(metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息;

和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息

@Target是修饰注解的注解, 也叫元注解;【概念】

1、@Override

  • 表示指定重写父类的方法(在编译层面),如果不是则会报错;

  • 不写@Override,但构成方法的重写也不影响;

2、@Deprecated

  • @Deprecated修饰某个元素,表示该元素已经过时。

  • 不推荐使用,但仍然可以使用

  • 从@Deprecated源码可以看出,可以用来修饰方法,类,包,字段,参数,等等;

  • @Deprecated可以坐版本升级过渡使用

3、@SuppressWarnings

  • 当我们不希望看到警告的时候,可以用@SuppressWarnings来抑制警告信息;

  • 在{" "}中,可以写入你希望抑制的警告信息;

  • 作用范围与@SuppressWarnings的位置有关;

韩顺平Java学习【枚举、注解】(笔记)相关推荐

  1. 韩顺平Java学习 泛型

    目录 一.泛型的语法 1.传统的方法遍历集合存在的问题 2.使用泛型来解决传统集合添加元素带来的问题 3.泛型使用介绍 4.泛型的使用细节 5.泛型课堂练习 二.自定义泛型 1.自定义泛型类的规范 ​ ...

  2. B站韩顺平java学习笔记(三)--运算符章节

    目录 一.算术运算符 1.  表格 2.  练习题: 二. 关系运算符 1.  表格 三.逻辑运算符 1.  表格 2.  练习题 四.赋值运算符 1.  介绍 2.细节特点 五.三元运算符 1.  ...

  3. B站韩顺平java学习笔记(六)--面向对象编程章节

    目录 一.类和对象 1.定义及区别 2.对象内存布局 3.属性/成员变量 (1)基本介绍 (2)注意事项和细节说明 (3)访问属性 4.对象 (1)创建对象 (2)对象分配机制 ​(3)Java创建对 ...

  4. 韩顺平Java学习笔记_IO流专题

    目录 一 文件 1.文件的概念: 文件是保存数据的地方 2.文件流:文件在程序中是以流的形式来操作的 2.1.输入流指数据从数据源(文件)到程序(内存)的路径 2.2.输出流指数据从程序(内存)到数据 ...

  5. 韩顺平Java学习笔记P245对象创建流程分析P246this关键字-P250

    P245对象创建流程分析 //1.先在方法区加载方法类 //2.在堆里开空间一个存放age,一个存放name //3.(先默认初始化有默认值age=0,name=null,再显示初始化age=90,n ...

  6. B站韩顺平java学习笔记(十六)-- 多线程基础章节

    目录 一  线程介绍 1  线程相关概念 (1)程序 (2)进程 (3)什么是线程 (4)其他相关概念 (5)查看电脑有多少个cpu核 二  线程的使用 1  线程的创建 (1)继承Thread类,重 ...

  7. B站韩顺平java学习笔记(八)-- 房屋出租系统(项目)章节

    目录 一 项目需求说明 1 项目界面 二  房屋租赁程序框架图 ​三  系统实现 1  完成House类 2  显示主菜单和完成退出软件的功能 3  完成显示房屋列表的功能 4  添加房屋信息的功能 ...

  8. B站韩顺平java学习笔记(二十五)-- 正则表达式章节

    目录 一  正则表达式入门 1  极速体验正则表达式威力 二  为什么要学正则表达式 三  正则表达式基本介绍 1  介绍 2  正则表达式底层实现

  9. B站韩顺平java学习笔记(二十三)-- MYSQL基础篇 章节

    目录 一  数据库 1  数据库简单原理图 2  使用命令行窗口连接MYSQL数据库 3  MySQL三层结构 4  数据在数据库中的存储方式 5  SQL语句分类 6  创建数据库 7  查看.删除 ...

最新文章

  1. 用 Linux 的 watch 命令观察命令和任务
  2. R语言交互式可视化包CanvasXpress
  3. Adroid学习之 从源码角度分析-禁止使用回退按钮方案
  4. Kubernetes 小白学习笔记(21)--kubernetes的运维-管理Lable
  5. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_15maven工程servlet实例之导入项目依赖...
  6. visio 输出mysql_Visio2010建立ER图并直接导出为SQL语句
  7. Mac安装yaf扩展
  8. Java之映射(map)
  9. 助力公共事业服务,RPA大显身手
  10. android设计模式面试,从外包公司到今日头条offer,吐血整理
  11. 充电桩市场与发展前景分析
  12. 黑客突破防火墙常用的几种技术(转)
  13. 当使用VMware给虚拟机扩展硬盘容量时,显示无法扩展容量并提示:在部分链上无法执行所调用的函数,请打开父虚拟磁盘。
  14. 如何在“运行”里打开软件
  15. Windows下4K屏mobaxterm远程桌面设置
  16. 第十届蓝桥杯真题题解
  17. 网络通信协议是什么?
  18. java_Stream流和Optional
  19. 面试杂谈之我的实习求职之路(7个offer)
  20. JAVA8 十大新特性详解

热门文章

  1. 跟着团子学SAP PS—项目计划参数文件的配置 OPSB
  2. java生鲜超市进销存管理系统SSM框架
  3. wps合并所有sheet页_wps表格多个sheet合并
  4. WPS Excel 筛选重复项
  5. 【学习笔记】优矿量化交易入门(一)策略框架编写
  6. Unity3D :树
  7. Android Sutdios使用jni配置
  8. JSP美容管理系统系统myeclipse开发mysql数据库web结构java编程
  9. dxf的DIMSTY尺寸标注格式
  10. STM32F407-高级定时器输入捕获功能