jdk8入门

Posted wuyicode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk8入门相关的知识,希望对你有一定的参考价值。

一、Lambda 表达式

  作用:让代码简化,流水线式的逻辑。可以简化 匿名内部类的 写法。

  首先介绍函数式接口,这个接口只有一个方法。

1.1 简化匿名内部类

@FunctionalInterface
public interface Swimmable {
     void swim();
}

 

public class LambdaExpressDemo {

    public void goSwimming(Swimmable swimmable) {
        swimmable.swim();
    }

}

 

LambdaExpressDemo lambdaExpressDemo = new LambdaExpressDemo();
// 这是传统的 匿名内部类的写法
lambdaExpressDemo.goSwimming(new Swimmable() {
    @Override
    public void swim() {
        System.out.println("这是传统的 匿名内部类的写法");
    }
});

lambdaExpressDemo.goSwimming(() -> System.out.println("lambda表达式的写法"));

 

 1.2 简化线程实现的写法, 比如 new runable(){} 用lambda写,就是 ()-> {// TODO 具体的业务} 。

 1.3 集合的常用操作:排序。除了使用 lambda表达式来代替 new Comparator(){},还有更简单的写法。

  给定一个 Person类。

        List<Person> personArrayList = new ArrayList<>();
        personArrayList.add(new Person("Tom", 22, 166));
        personArrayList.add(new Person("Jerry", 76, 176));
        personArrayList.add(new Person("张三", 55, 188));
        personArrayList.add(new Person("李四", 76, 199));
        personArrayList.sort(Comparator.comparingInt(Person::getAge).thenComparing(Person::getName));
        personArrayList.forEach(System.out::println);

 

 运行结果是

Person{ Tom, 22, 166}
Person{ 张三, 55, 188}
Person{ Jerry, 76, 176}
Person{ 李四, 76, 199}

 

1.4 lambda表达式 和 匿名内部类的 比较

  1. 需要实现的类型不一样
    • 匿名内部类 需要抽象类 ,接口 都可以。
    • 而 lambda表达式 必须实现一个 函数式接口。
  2. 可以实现的抽象方法 的 数量不一样编译过程不一样
    • 匿名内部类 可以 实现 多个抽象方法。
    • 而 lambda表达式 只能 实现一个。
  3. 编译过程不一样
    • 匿名内部类 在 编译后 ,会形成一个 XXXXX$1.class文件。
    • 而 lambda表达式 在 程序运行的时候,不会生成 新的class文件。

 

二、内置的函数式接口

 

以上是关于jdk8入门的主要内容,如果未能解决你的问题,请参考以下文章

JDK8系列之Stream API入门教程和示例

Atom编辑器入门到精通 Atom使用进阶

Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)

Cg入门19:Fragment shader - 片段级模型动态变色

入门 - 05- java开发环境搭建

入门 - 05- java开发环境搭建