韩顺平Java学习【枚举、注解】(笔记)
枚举【enumeration】
枚举是一组常量的集合;
属于一种特殊的类,里面只包含一组有限的特定的对象;
自定义类实现枚举——应用
不需要提供 setxxx 方法,因为枚举对象值通常为只读;
对枚举对象/属性使用 final+static 共同修饰,实现底层优化;
枚举对象名通常使用全部大写,常量的命名规范;
枚举对象根据需要,也可以有多个属性;
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 + '\'' +'}';}
}
小结:
构造器私有化
类内部创建一组对象;
对外暴露对象【即:public static final修饰】
提供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学习【枚举、注解】(笔记)相关推荐
- 韩顺平Java学习 泛型
目录 一.泛型的语法 1.传统的方法遍历集合存在的问题 2.使用泛型来解决传统集合添加元素带来的问题 3.泛型使用介绍 4.泛型的使用细节 5.泛型课堂练习 二.自定义泛型 1.自定义泛型类的规范 ...
- B站韩顺平java学习笔记(三)--运算符章节
目录 一.算术运算符 1. 表格 2. 练习题: 二. 关系运算符 1. 表格 三.逻辑运算符 1. 表格 2. 练习题 四.赋值运算符 1. 介绍 2.细节特点 五.三元运算符 1. ...
- B站韩顺平java学习笔记(六)--面向对象编程章节
目录 一.类和对象 1.定义及区别 2.对象内存布局 3.属性/成员变量 (1)基本介绍 (2)注意事项和细节说明 (3)访问属性 4.对象 (1)创建对象 (2)对象分配机制 (3)Java创建对 ...
- 韩顺平Java学习笔记_IO流专题
目录 一 文件 1.文件的概念: 文件是保存数据的地方 2.文件流:文件在程序中是以流的形式来操作的 2.1.输入流指数据从数据源(文件)到程序(内存)的路径 2.2.输出流指数据从程序(内存)到数据 ...
- 韩顺平Java学习笔记P245对象创建流程分析P246this关键字-P250
P245对象创建流程分析 //1.先在方法区加载方法类 //2.在堆里开空间一个存放age,一个存放name //3.(先默认初始化有默认值age=0,name=null,再显示初始化age=90,n ...
- B站韩顺平java学习笔记(十六)-- 多线程基础章节
目录 一 线程介绍 1 线程相关概念 (1)程序 (2)进程 (3)什么是线程 (4)其他相关概念 (5)查看电脑有多少个cpu核 二 线程的使用 1 线程的创建 (1)继承Thread类,重 ...
- B站韩顺平java学习笔记(八)-- 房屋出租系统(项目)章节
目录 一 项目需求说明 1 项目界面 二 房屋租赁程序框架图 三 系统实现 1 完成House类 2 显示主菜单和完成退出软件的功能 3 完成显示房屋列表的功能 4 添加房屋信息的功能 ...
- B站韩顺平java学习笔记(二十五)-- 正则表达式章节
目录 一 正则表达式入门 1 极速体验正则表达式威力 二 为什么要学正则表达式 三 正则表达式基本介绍 1 介绍 2 正则表达式底层实现
- B站韩顺平java学习笔记(二十三)-- MYSQL基础篇 章节
目录 一 数据库 1 数据库简单原理图 2 使用命令行窗口连接MYSQL数据库 3 MySQL三层结构 4 数据在数据库中的存储方式 5 SQL语句分类 6 创建数据库 7 查看.删除 ...
最新文章
- 用 Linux 的 watch 命令观察命令和任务
- R语言交互式可视化包CanvasXpress
- Adroid学习之 从源码角度分析-禁止使用回退按钮方案
- Kubernetes 小白学习笔记(21)--kubernetes的运维-管理Lable
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_15maven工程servlet实例之导入项目依赖...
- visio 输出mysql_Visio2010建立ER图并直接导出为SQL语句
- Mac安装yaf扩展
- Java之映射(map)
- 助力公共事业服务,RPA大显身手
- android设计模式面试,从外包公司到今日头条offer,吐血整理
- 充电桩市场与发展前景分析
- 黑客突破防火墙常用的几种技术(转)
- 当使用VMware给虚拟机扩展硬盘容量时,显示无法扩展容量并提示:在部分链上无法执行所调用的函数,请打开父虚拟磁盘。
- 如何在“运行”里打开软件
- Windows下4K屏mobaxterm远程桌面设置
- 第十届蓝桥杯真题题解
- 网络通信协议是什么?
- java_Stream流和Optional
- 面试杂谈之我的实习求职之路(7个offer)
- JAVA8 十大新特性详解