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));// 下个周日
     
  • 相关阅读:
    【转+补充】在OpenCV for Android 2.4.5中使用SURF(nonfree module)
    Delphi StarOffice Framework Beta 1.0 发布
    Angular ngIf相关问题
    angularjs文档下载
    公众号微信支付开发
    公众号第三方平台开发 教程六 代公众号使用JS SDK说明
    公众号第三方平台开发 教程五 代公众号处理消息和事件
    公众号第三方平台开发 教程四 代公众号发起网页授权说明
    公众号第三方平台开发 教程三 微信公众号授权第三方平台
    公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
  • 原文地址:https://www.cnblogs.com/wl889490/p/12815253.html
Copyright © 2011-2022 走看看