- 枚举
- 枚举额的概述
- 枚举常⽤⽅法
- 1.values() 使⽤
- 2.ordinal() 使⽤
- 3.valueOf() 使⽤
- 4.compareTo() 使⽤
- 枚举的优点:
- 枚举的缺点:
- Lambda表达式
- lambda的概述:
- Lambda 表达式的基本语法:
- 1. ⼊参 paramaters:
- 2. ->:
- 3. 实现代码(⽅法体):
- Lambda表达式的基础使用
- meLambda 和函数式接⼝
- Lambda表达式的优点
- Lambda表达式的缺点:
枚举是在一定范围内取值,并且这个值必须是枚举类型中的任意一个,并且只能有一个。使⽤ enum 定义,enum 和类是同级别的。
枚举常⽤⽅法 1.values() 使⽤以数组形式返回枚举类型的所有成员。
代码示例
enum ColorEnum {
RED, GREEN, BLACK;
public static void main(String[] args) {
for (ColorEnum colorEnum : ColorEnum.values()) {
System.out.println(colorEnum);
}
}
}
2.ordinal() 使⽤
获取枚举成员的索引位置。
代码示例
enum ColorEnum {
RED, GREEN, BLACK;
public static void main(String[] args) {
for (ColorEnum colorEnum : ColorEnum.values()) {
System.out.println(colorEnum + ":" + colorEnum.ordinal());
}
// ColorEnum color = ColorEnum.GREEN;
// System.out.println(color.ordinal());
}
}
3.valueOf() 使⽤
将普通字符串转换为枚举实例。
代码示例
enum ColorEnum {
RED, GREEN, BLACK;
public static void main(String[] args) {
ColorEnum color = ColorEnum.valueOf("BLACK");
System.out.println(color.ordinal());
}
}
4.compareTo() 使⽤
⽐较两个枚举成员在定义时的顺序,返回值为 -1/0/1。
代码示例
enum ColorEnum {
RED, GREEN, BLACK;
public static void main(String[] args) {
System.out.println(ColorEnum.RED.compareTo(ColorEnum.GREEN));
}
}
枚举的优点:
- 增强了代码的可读性。
- 减少了传递参数的错误概率。
- switch 判断更⽅便,语法清晰。
- 代码⾜够简洁、优雅。
- 枚举的缺点: 不可继承,⽆法扩展。
表达式是一个可以传递的代码块,可以在以后一次或多次执行,也就是它会延迟执行,等待某个时刻或者某个事件发生在执行。它类似于一个方法的实现。
Lambda 表达式的基本语法:(入参 ->{实现代码}
表达式由 3 部分组成:
1. ⼊参 paramaters:类似⽅法中的形参列表,这⾥的参数是函数式接⼝⾥的参数。这⾥的参数 类型可以明确的声明也可不声明⽽由JVM隐含的推断。另外当只有⼀个推断类型时可以省略 掉圆括号。
2. ->:可理解为“被⽤于”的意思
3. 实现代码(⽅法体):可以是表达式也可以代码块,是函数式接⼝⾥⽅法的实现。代码块可 返回⼀个值或者什么都不反回,这⾥的代码块块等同于⽅法的⽅法体。如果是表达式,也可 以返回⼀个值或者什么都不返回。
Lambda表达式的基础使用1.如果 lambda 参数的⼩括号⾥⾯只有⼀个参数,那么⼩括号可以省略。
2. 如果⽅法体当中只有⼀句代码,那么⼤括号可以省略。
3. 如果⽅法体中只有⼀条语句,其是 return 语句,那么⼤括号可以省略,且去掉 return 关键字。
import java.util.Arrays;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List lists = Arrays.asList("Hello", "World", "Java");
// 没使⽤ lambda 之前
for (String list : lists) {
System.out.println(list);
}
System.out.println();
// 使⽤ lambda 之后
lists.forEach(s -> System.out.println(s));
}
}
meLambda 和函数式接⼝
// 1. 不需要参数,返回值为 2 () -> 2 // 2. 接收⼀个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的和 (x, y) -> x + y // 4. 接收2个int型整数,返回他们的乘积 (int x, int y) -> x * y // 5. 接受⼀个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) (String s) -> System.out.print(s)
但是 Lambda 表达式不能直接使⽤。 Lambda 表达式不能直接使⽤,它在使⽤之前必须初始化,lambda 表达式必须借助函数式接⼝ (@FunctionalInterface)来初始化。
Lambda表达式的优点- 代码简洁,开发迅速
- ⽅便函数式编程
- ⾮常容易进⾏并⾏计算
- Java 引⼊ Lambda,改善了集合操作
- 代码可读性变差
- 在⾮并⾏计算中,很多计算未必有传统的 for 性能要⾼
- 不容易进⾏调试



