枚举(enum) -- 掌握基本概念和语法
所谓枚举 -- 是一种取值范围固定在某个指定集当中的数据类型。 定义的语法:
public enum 枚举类型名{ 值选项1,值选项2,....,值选项n; }
注意点: 1、这里的值选项是标识符,不是字符串; 2、这里的值选项是有顺序的; 3、值选项不能重复。
使用的语法:
枚举类型 变量 = 枚举类型.值选项;
枚举的本质
枚举其实是一个语法糖,在本质它是一个自动继承于Enum类的子类。 Enum类来自于java.lang包,是一个抽象类。Enum拥有的属性行为,所有的枚举类型都拥有。
属性: name -- 选项名字 String
ordinal -- 选项的序号 int
这两个属性都是私有的常量,也就是说外部不可访问,同时一旦产生Enum对象以后其值也不能修改。
非static方法: name() -- 返回选项的名字
ordinal() -- 返回选项的序号
compareTo() -- 比较两个枚举对象的大小,返回的是它们的序号差
另外凡是来自于Object类的方法,它都有。包括: equals() -- 判断两个枚举对象是否相等 toString() -- 返回枚举的字符串描述,其实重写后就是返回的name
static方法: values() -- 以数组的形式返回这个枚举类里面有哪些选项。
-
enum枚举就是类类型;
-
父类是Enum是一个抽象类,来自于java.lang包;
-
常用方法: compareTo() equals() values()
枚举的高阶使用
1、在自定义的enum类型中可以增加属性; 2、在自定义的enum类型中可以增加行为; 3、在自定义的enum类型中可以重写从Enum中继承而来的方法 4、在自定义的enum类型中可以增加构造(完成自我阅读学习)。
记录(record) -- 了解
在JDK14当中,提供了一种新的类型叫做record(记录)。它是专门用来定义一种特殊类的“简化语法”。
什么样的特殊类呢? 专门用来存放属性值,且每个属性的值一旦确立不能修改。这种类的预设场景是在做数据传输的时候。 用传统语法做这种类的设计,写起来比较麻烦。因此专门设计了record类型的语法。
定义语法:
//这里()里面既可以称之为参数,也可以称为属性 public record 名字(书写上参数){ }
然后它自动生成带参构造,自动生成final属性,自动生成与属性名保持一致的get方法,自动重写toString()
record的本质
也是语法糖,它也是类类型,它父类是来自于java.lang.Record的抽象类。