zoukankan      html  css  js  c++  java
  • JAVA8新特性

    1.Lambda表达式
    Lambda 是一个 匿名函数, 我们可以把 Lambda表达式理解为是一段可以传递的代码。可以写出更简洁、更灵活的代码。
    语法格式一: 无参, 无返回值, Lambda体只需要一条语句
     Runnable runnable2 = () -> System.out.println("hello word lambda");
    语法格式二: Lambda 需要一个参数
    (args) -> System.out.println(args);
    语法格式三 : Lambda只需要一个参数时,Lambda操作符左侧参数的小括号可以省略
    () -> System.out.println(args);
    语法格式四: Lambda 需要两个参数, 并且有返回值
    (x,y) -> {System.out.println("语法格式四");
    return x+y;}
    语法格式五: 当Lambda体只有一条语句时, return 与 大括号可以省略 参数类型也可以省(类型推断)
    (x,y) -> x+y;
     
    2.函数式接口:
    四大核心函数式接口(只有一个抽象方法的接口)
    当Lambda表达式有参数但无返回值时,用Consumer< T> consumer=Lambda表达式   然后用consumer.accept()
     Consumer<String> consumer = (x) -> out.println(x);
        consumer.accept("hello lamdba");
    结果:hello lamdba
    当Lambda表达式无参数但有返回值时,用Supplier< T>  supplier=Lambda表达式   然后用supplier.get();
    Employee employee = new Employee(11, "林青霞", 28, 5555);
        Supplier<String> supplier = () -> employee.getName();
        System.out.println(supplier.get());
    结果:林青霞
    有参数类型为T有返回值类型为R  用Function< T,R>   R apply(T t)
    BiFunction<Integer, Integer, Integer> biFunction = (x, y) -> Math.max(x, y);//前两个integer为参数类型,后一个为返回值类型
       System.out.println(biFunction.apply(24, 9));
    结果:24
    确定类型为T的对象是否满足某约束,并返回boolean值   Predicate< T>    boolean test (T t)
    BiPredicate<String, String> biPredicate = (x, y) -> x.equals(y);
        System.out.println(biPredicate.test("dd", "DD"));
    结果:false
     
    3.方法引用和构造器引用:
    方法引用语法格式:使用操作符 ” :: ” 将方法名和对象或者类的名字分隔开来
    对象 :: 实例方法名
    类名 :: 静态方法名
    类名 :: 实例方法名
    构造器引用:语法格式:ClassName :: new
     
    4.stream API:
    Stream操作的三个步骤
    1 第一步创建stream
    2 第二步中间操作
    3 第三步终止操作终端操作
    创建Stream的四种方式
    1.集合创建流:Stream<Employee> stream = list.stream();
    2.由数组创建流:Stream<Integer> stream1 = Arrays.stream(num);
    3.由值创建流:Stream<Integer> stream2 = Stream.of(1, 5, 7);
    4.由函数创建流
    中间操作 惰性求值 除非流水线(中间操作组成的)上触发终止操作,否则中间操作不会执行任何的处理! 而在终止操作时一次性全部处理,称为“惰性求值”。
    fliter 筛选  limit 截断  skip 跳过 distinct() 去重
    终止操作:foreach allmatch count max min等
    格式:emps.stream() .allMatch(Lambda表达式)
     
    5.新时间日期API:
    localdate localtime localdatetime
    LocalDate localDate =LocalDate.now();
    LocalDate localDate = LocalDate.of(2016, 10, 26);
     LocalDateTime localDateTime2 = localDateTime1.plusDays(5);
     Duration duration = Duration.between(localTime1, localTime);时间间隔
     Period period = Period.between(localDate1, localDate); 时期间隔
    TemporalAdjuster : 时间校正器。有时我们可能需要获 取例如:将日期调整到“下个周日”等操作。
     LocalDateTime dateTime = localDateTime.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));// 下个周日
     
  • 相关阅读:
    16进制节码解析
    批注:modbus_tkdefines.py
    <20211019> Win10不明原因丢失任务提示栏里的Wifi以及网络任务提示栏logo
    <20210926>log: 运行5年3个月的NAS硬盘更换
    Huggingface中的BERT模型的使用方法
    list变量和dict变量前面加*号
    Linux服务器登录阿里网盘下载和上传文件的方法
    【IDEA与git集成】
    【为什么要用 @param注解】
    【我的编程习惯与开发插件】
  • 原文地址:https://www.cnblogs.com/wl889490/p/12815253.html
Copyright © 2011-2022 走看看