Java基础 8.25
1.enum常用方法的使用
- toString:Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息
- name:返回当前对象名(常量名),子类中不能重写
- ordinal:返回当前对象的位置号,默认从0开始
- values:返回当前枚举类中所有的常量
- valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常
- compareTo:比较两个枚举常量,比较的就是编号
新知识点:增强for循环
package com.logic.enum_;/*** @author logic* @version 1.0* 演示Enum类各种方法的使用*/
public class EnumMethod {public static void main(String[] args) {Season2 autumn = Season2.AUTUMN;//输出枚举对象的名称System.out.println(autumn.name());//ordinal() 输出的是该枚举对象的次序/编号 从0开始编号//AUTUMN 是第三个 因此输出2System.out.println(autumn.ordinal());//从反编译可以看出values方法 返回Season2[]//含有定义的所有枚举对象Season2[] values = Season2.values();//增强for循环//执行流程 从values中依次取出数据 赋给season 如果取出完毕 则退出for循环for (Season2 season : values) {System.out.println(season);}//根据你输入的AUTUMN到Season2的枚举对象去查找//如果找到了 就返回 如果没有找到 就报错Season2 autumn1 = Season2.valueOf("AUTUMN");System.out.println(autumn1);System.out.println(autumn1 == autumn);//compareTo 比较两个枚举常量 比较的就是编号//就是把 Season2.AUTUMN 枚举对象的编号和Season2.SUMMER 枚举对象的编号比较//Season2.SUMMER编号[1] - Season2.AUTUMN编号[2]System.out.println(Season2.SUMMER.compareTo(Season2.AUTUMN));}
}
2.enum的练习
声明Week枚举类,其中包含星期一至星期日的定义:MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, SUNDAY;使用values返回所有的枚举数组,并遍历,输出
package com.logic.enum_;/*** @author logic* @version 1.0*/
public class EnumExercise02 {public static void main(String[] args) {Week[] values = Week.values();System.out.println("==所有星期的信息如下==");for (Week day : values) {System.out.println(day);}}
}enum Week {MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"),FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日");private String cn;private Week(String cn) {this.cn = cn;}@Overridepublic String toString() {return cn;}
}
3.enum细节
使用enum关键字后,就不能再继承其它类了,因为enum会隐式继承Enum,而Java是单继承机制
枚举类和普通类一样,可以实现接口,如下形式:enum 类名 implements 接囗1,接口2