栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

枚举和Lambda表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

枚举和Lambda表达式

文章目录
  • 枚举
    • 枚举额的概述
    • 枚举常⽤⽅法
      • 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));
   }
}
枚举的优点:
  1. 增强了代码的可读性。
  2. 减少了传递参数的错误概率。
  3. switch 判断更⽅便,语法清晰。
  4. 代码⾜够简洁、优雅。
  5. 枚举的缺点: 不可继承,⽆法扩展。
Lambda表达式 lambda的概述:

表达式是一个可以传递的代码块,可以在以后一次或多次执行,也就是它会延迟执行,等待某个时刻或者某个事件发生在执行。它类似于一个方法的实现。

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表达式的优点
  1. 代码简洁,开发迅速
  2. ⽅便函数式编程
  3. ⾮常容易进⾏并⾏计算
  4. Java 引⼊ Lambda,改善了集合操作
Lambda表达式的缺点:
  1. 代码可读性变差
  2. 在⾮并⾏计算中,很多计算未必有传统的 for 性能要⾼
  3. 不容易进⾏调试
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/936890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号