枚举类Enum
what:
首先他是个类 特殊的类 不过是
原版:
public enum A {
X,Y,Z;
}
反编译字节码:
public final class A extends java.lang.Enum<A>{
public static final A X = new A(); //修饰变量
public static final A Y = new A();
public static final A Z = new A();
public static A[] values();
public static A valueOf(java.lang.String)
}
//十分特殊 是个final class:阻止类被继承 类的行为不会被更改
//类A 继承了Enum属性 并且还给Enum类 类型参数
//java.lang 是 Java 编程语言里一个极为关键的包,它默认会被每个 Java 程序自动导入,无需显式地使用 import 语句来引入
public final class A extends javalangEnum<A>{
}
/*
public static final A X = new A();
public static final A Y = new A();
public static final A Z = new A();
analys:
X Y Z 是A类实例化
A是public final class 不可继承类
static:
what:
表示变量属于该类本身可以随时访问
static 修饰内部类
public:
what:
表示只要能访问到该变量的类 就能访问该变量
1.使用static变量 不用实例化对于public的变量也可以直接访问,
2.对于不是static的变量必须实例化进行访问
final:
what:
修饰变量:表示变量不可以被改变
修饰类:类无法被继承重写方法over
combinition:
public static:
what:
修饰变量/内部类:公共 属于该类的变量
public final:
what:
公共的 无法被修改的
public static final:
公共的 属于该类的静态内部类 无法被修改
public static final A X = new A();
summarize the analysis:
内部类 公共的 属于A类的静态类 无法被改变的X
这些 X Y Z 只属于A 并且创造的 X Y Z 不会创建 新的X Y Z因为 X Y Z 是静态的始终属于A
public static A[] values();
analysis:
Weekday[] allWeekdays = Weekday.values();
Weekday.values() 返回一个包含 MONDAY 到 SUNDAY 所有枚举实例的数组
example:
enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
public class Main {
public static void main(String[] args) {
// 调用 values() 方法获取枚举实例数组
Weekday[] allWeekdays = Weekday.values();
for (Weekday weekday : allWeekdays) {
System.out.println(weekday);
}
}
}
public static A valueOf(java.lang.String)
analysis:
Weekday weekday = Weekday.valueOf(input);
input = 输入 字符串 "MONDAY" 返回枚举类型 枚举类型MONDAY
枚举类型MONDAY 是A类 有自己的方法 可以输入自己做出操作
example:
enum Weekday {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
public void performTask() {
switch (this) {
case MONDAY:
System.out.println("开始新一周的工作,整理本周计划");
break;
case TUESDAY:
System.out.println("参加团队会议,汇报工作进展");
break;
// 其他星期的任务...
default:
break;
}
}
}
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入星期名称(如 MONDAY):");
String input = scanner.nextLine();
try {
Weekday weekday = Weekday.valueOf(input);
weekday.performTask();
} catch (IllegalArgumentException e) {
System.out.println("输入的星期名称无效,请重新输入。");
}
scanner.close();
}
}
use:
public class animals {
public static String name = "你好";
public String getName() {
return name;
}
/*
what fault:
创建新实体 如果实例化一个 那么会无限的创建属于自己的成员变量
how change:
将无线创建的成员变量变成 static 只属于该类共同体的 成员变量就不会无线创建下去 如同枚举类型 且 该成员变量类可以传入参数
what:
实例化自己的成员变量时 给构造函数传入参数 共用一套static 成员变量
*/
animals a = new animals();
}
main:
public class Main {
public static void main(String[] args) {
animals animals = new animals();
// 访问静态变量 name
System.out.println(animals.name);
// 也可以直接通过类名访问静态变量
System.out.println(animals.name);
// 调用 getName 方法
System.out.println(animals.getName());
}
}