枚举
概念:枚举是一组常量集合,可以理解为是一种特殊的类,里面包含一组有限的特定对象。
实现的的两种方式
自定义枚举
public class Enumeration02 {public static void main(String[] args){System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);}}//演示字定义枚举实现 class Season {private String name;private String desc;//描述//定义了四个对象, 固定.public static final Season SPRING = new Season("春天", "温暖");public static final Season WINTER = new Season("冬天", "寒冷");public static final Season AUTUMN = new Season("秋天", "凉爽");public static final Season SUMMER = new Season("夏天", "炎热"); //1. 将构造器私有化,目的防止 直接 new //2. 去掉 setXxx 方法, 防止属性被修改//3. 在 Season 内部,直接创建固定的对象//4. 优化,可以加入 final 修饰符private Season(String name, String desc){ this.name = name;this.desc = desc;}public String getName() {return name; }public String getDesc() {return desc; }@Overridepublic String toString() { return "Season{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + '}';}}
特点:
1) 构造器私有化
2) 本类内部创建一组对象[四个 春夏秋冬]
3) 对外暴露对象(通过为对象添加 public final static 修饰符)
4) 可以提供 get 方法,但是不要提供 set
enum创建枚举
1) 当我们使用 enum 关键字开发一个枚举类时,默认会继承 Enum 类, 而且是一个 final 类[如何证明],老师使用 javap 工
具来演示
2) 传统的 public static final Season2 SPRING = new Season2(“春天”, “温暖”); 简化成 SPRING(“春天”, “温暖”), 这里必
须知道,它调用的是哪个构造器.
3) 如果使用无参构造器 创建 枚举对象,则实参列表和小括号都可以省略
4) 当有多个枚举对象时,使用,间隔,最后有一个分号结尾
5) 枚举对象必须放在枚举类的行首.
常用方法:
1) toString:Enum 类已经重写过了,返回的是当前对象
名,子类可以重写该方法,用于返回对象的属性信息
2) name:返回当前对象名(常量名),子类中不能重写
3) ordinal:返回当前对象的位置号,默认从 0 开始
4) values:返回当前枚举类中所有的常量
5) valueOf:将字符串转换成枚举对象,要求字符串必须
为已有的常量名,否则报异常!
6) compareTo:比较两个枚举常量,比较的就是编号!
注解
概念:和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。
使用 Annotation 时要在其前面增加 @ 符号, 并把该 Annotation 当成一个修饰符使用。用于修饰它支持的程序元素。
三个基本的 Annotation:
1) @Override: 限定某个方法,是重写父类方法, 该注解只能用于方法
2) @Deprecated: 用于表示某个程序元素(类, 方法等)已过时
3) @SuppressWarnings: 抑制编译器警告
@Override 限定于方法,当对父类方法进行重写时,添补添加都可以,如果指定添加了@Override 的的话,编译器回去检查是否重写了父类方法,如果有则编译通过,如果没有。编译报错。
元注解
元注解(An’notation)是修饰其他的注解的注解
1) Retention //指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME
2) Target // 指定注解可以在哪些地方使用
3) Documented //指定该注解是否会在 javadoc 体现
4) Inherited //子类会继承父类注解
异常
java中将程序执行中发生的补正常称为”异常“,可分为两种:1. Error(错误) 【JAVA虚拟及无法解决的严重错误】;2. Exception(因编程错误或者一些偶尔的外在因素导致的一般性问题)【分为运行异常和编译异常】
运行异常处理的两种方式
try-catch-finally
throws
自定义异常

public class CustomException {public static void main(String[] args) /*throws AgeException*/ {int age = 180;//要求范围在 18 – 120 之间,否则抛出一个自定义异常if(!(age >= 18 && age <= 120)) {//这里我们可以通过构造器,设置信息throw new AgeException("年龄需要在 18~120 之间");}System.out.println("你的年龄范围正确.");}}//自定义一个异常 //老韩解读//1. 一般情况下,我们自定义异常是继承 RuntimeException//2. 即把自定义异常做成 运行时异常,好处时,我们可以使用默认的处理机制//3. 即比较方便class AgeException extends RuntimeException {public AgeException(String message) {//构造器super(message);}}



