JavaSe第七天笔记小记
1、枚举类
如果一个类的对象是有限和固定的,则可以使用枚举类
1-1 枚举类与普通类的相同之处
- enum与class、interface具有相同的地位
- 可以继承多个接口
- 可以具有构造器、成员方法、成员变量
1-2 枚举类与普通类的不同之处
- 枚举类默认继承java.util.Enum,因此不能继承其他父类,其中java.util.Enum类实现了java.lang.Serializable 和 java.lang.Comparable 接口
- 当定义一个枚举类型时,每一个枚举类型成员都可以看作是Enum类的实例,这些枚举成员都被final public static修饰,当使用这些枚举成员时,直接使用枚举名称调用成员即可
- 使用enum定义,默认使用final修饰,因此不能派生子类
- 构造器默认使用private修饰,且只能使用private修饰
- 枚举类所有实例必须在第一行给出,默认添加public static final修饰,否则无法产生实例
1-3 Enum类的常用方法
方法名称 | 描述 |
---|---|
values() | 以数组形式返回枚举类型的所有成员 |
valueOf() | 将普通字符串转换为枚举实例(该枚举实例必须在枚举类中有定义) |
compareTo() | 比较两个枚举成员在定义时的顺序 |
ordinal() | 获取枚举成员的索引位置 |
// 创建一个包含 3 个成员的枚举类型 Signal,然后调用 values() 方法输出这些成员。
enum Signal {
// 定义一个枚举类型
GREEN,YELLOW,RED
}
public class TrafficLight {
public static void main(String[] args) {
for(int i = 0; i < 3; i++){
System.out.println(Signal.values()[i]);
}
}
}
1-4 为枚举类添加新方法
Java 为枚举类型提供了一些内置的方法,同时枚举常量也可以有自己的方法。此时要注意必须在枚举实例的最后一个成员后添加分号,而且必须先定义枚举实例。
public class TestEnum {
public static void main(String[] args) {
Season spring = Season.SPRING;
Season summer = Season.SUMMER;
Season automn = Season.FALL;
Season winter = Season.WINTER;
spring.showInfo();
summer.showInfo();
automn.showInfo();
winter.showInfo();
// 枚举类中的实例都只能有一份
Season spring_1 = Season.SPRING;
Season spring_2 = Season.SPRING;
System.out.println(spring_1 == spring_2);
System.out.println(spring_1.equals(spring_2));
}
}
enum Season {
SPRING("春天","春暖花开"),
SUMMER("夏天","热起来了"),
FALL("秋天","落叶纷飞"),
WINTER("冬天","冰天雪地");
String sName; // 季节
String sentence; // 标语
Season(String sName, String sentence) {
this.sName = sName;
this.sentence = sentence;
}
public void showInfo(){
System.out.println("季节:" + sName + " 标语:" + sentence);
}
}
运行结果:
季节:春天 标语:春暖花开
季节:夏天 标语:热起来了
季节:秋天 标语:落叶纷飞
季节:冬天 标语:冰天雪地
true
true
2、注解(Annotation)
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。
注解即代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相对应的处理,通过注解,我们可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
内置的注解
Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation 中。
作用在代码的注解是
- @Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
- @Deprecated - 标记过时方法。如果使用该方法,会报编译警告。
- @SuppressWarnings - 指示编译器去忽略注解中声明的警告。