枚举

概念:枚举是一组常量集合,可以理解为是一种特殊的类,里面包含一组有限的特定对象
实现的的两种方式

自定义枚举

  1. public class Enumeration02 {
  2. public static void main(String[] args)
  3. {
  4. System.out.println(Season.AUTUMN);
  5. System.out.println(Season.SPRING);
  6. }
  7. }
  8. //演示字定义枚举实现 class Season {
  9. private String name;
  10. private String desc;//描述
  11. //定义了四个对象, 固定.
  12. public static final Season SPRING = new Season("春天", "温暖");
  13. public static final Season WINTER = new Season("冬天", "寒冷");
  14. public static final Season AUTUMN = new Season("秋天", "凉爽");
  15. public static final Season SUMMER = new Season("夏天", "炎热"); //1. 将构造器私有化,目的防止 直接 new //2. 去掉 setXxx 方法, 防止属性被修改
  16. //3. 在 Season 内部,直接创建固定的对象
  17. //4. 优化,可以加入 final 修饰符
  18. private Season(String name, String desc)
  19. { this.name = name;
  20. this.desc = desc;
  21. }
  22. public String getName() {
  23. return name; }
  24. public String getDesc() {
  25. return desc; }
  26. @Override
  27. public String toString() { return "Season{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + '}';
  28. }
  29. }

特点:
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 的的话,编译器回去检查是否重写了父类方法,如果有则编译通过,如果没有。编译报错。

@Deprecated
image.png

元注解

元注解(An’notation)是修饰其他的注解的注解
1) Retention //指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME
2) Target // 指定注解可以在哪些地方使用
3) Documented //指定该注解是否会在 javadoc 体现
4) Inherited //子类会继承父类注解

异常

java中将程序执行中发生的补正常称为”异常“,可分为两种:1. Error(错误) 【JAVA虚拟及无法解决的严重错误】;2. Exception(因编程错误或者一些偶尔的外在因素导致的一般性问题)【分为运行异常编译异常
image.png

运行异常处理的两种方式

try-catch-finally

image.png
image.png

throws

image.png
image.png

自定义异常

image.png

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

image.png