Java8新特性: Lambda helloworld

简介: Java8新特性: Lambda helloworld

Java8 新特性

Java 8 (又称为 jdk 8 ) 是java语言开发的一个主要版本,Java8是 oracle 公司 2014 4月发布的,可以看成自java5 以来最具革命性的版本,Java 8 为java 语言,编译器,类库,开发功能与JVM带来了大量的新特性

Java 8 新特性介绍

速度更快

代码更少(增加了 新的语法 :Lambada 表达式)

强大的 Stream API

便于并行 提高程序的运行速度 例: 遍历长度为 100k的数组 快速排序快了 4.7倍

最大化减少空指针异常 Optional

Nashom 引擎:允许Jvm上运行JS应用

Lambda表达式(重点)

为什么要使用Lambda 表达式


lambda 表达式是一个匿名函数 ,我们可以把Lambda 表达式理解为是一段可以传递的代码,(将代码像数据一样进行·传递),使用它可以写出更简洁更灵活的代码,作为一种更紧凑的代码风格,使用java的语言表达能力得到了提升.


理论+实践方便理解


Lambda 表达式 coding


简单的用 Lambda做一个hello world的演示


这个语法主要做的就是简化了我们语法

帮我们省去的大多固定要编写的东西

从而达到 语法的简化

/**
 * @author : <h2>冷环渊</h2>
 * @date : 2021/12/10
 * @context:<h4>Lambda 表达式 实操案例</h4>
 */
public class LambdaTest {
    /**
     * <h2>示例 1  无参数 传统语法 和 lambda 表达式的区别</h2>
     */
    @Test
    public void Test1() {
        // 传统 的 创建一个 线程 打印
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("我爱北京天安门");
            }
        };
        r1.run();
        System.out.println("****************************");
        // 用 lambda 表达式 的方法
        Runnable r2 = () -> System.out.println("我爱看北京天安门");
        r2.run();
    }
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/10
     * @context: <h3>有参数的 Lambda 表达式 传统和 新语法</h3>
     * @params :  null
     */
    @Test
    public void Test2() {
        //传统的语法 对象 实现对应方法
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };
        int compare1 = com1.compare(12, 21);
        System.out.println(compare1);
        System.out.println("***********************");
        /*
         *  lambda表达式 有参数 语法
         *  函数式接口 使用这个接口你一定要实现且只要是先一个接口的时候就可以使用 Lambda 表达式
         *   @FunctionalInterface
         *   public interface Comparator<T> {
         *   int compare(T o1, T o2);
         *    }
         *  使用之后 就变成来很简洁的语法  他代替我们省区了很多已知的东西
         *  Comparator<Integer> com2 = (o1, o2) -> Integer.compare(o1, o2);
         * */
        Comparator<Integer> com2 = (o1, o2) -> Integer.compare(o1, o2);
        int compare2 = com2.compare(32, 21);
        System.out.println(compare2);
        System.out.println("***********************");
        //我们还可以更加的简化
        //方法引用
        Comparator<Integer> com3 = Integer::compare;
        int compare3 = com3.compare(20, 21);
        System.out.println(compare3);
        System.out.println("***********************");
    }
}

简单的认识了一下 Lambda表达式,我们来看看 不同情况下的lambda表达式的语法变化


/**
 * @author : <h2>冷环渊</h2>
 * @date : 2021/12/10
 * @context: <h4>
 * 1. 举例子(o1,o2)-> Integeer.compare(o1,o2)
 * 2.格式:
 * -> Lambda操作符 或者叫箭头操作符
 * ()形参列表 相当于是接口中的抽象方法的参数列表,可以省去类型
 * ->右边 Lambda体 其实就是重写抽象对象的方法体
 * 3.Lambda 表达式的使用(有六种情况可以介绍)
 * 4.本质 Lambda 表达式的本质:作为接口的实例
 * </h4>
 */
public class LambdaTest1 {
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/10
     * @context: <h3>语法格式一 :没有参数 没有返回值 </h3>
     * @params :  null
     */
    @Test
    public void Test1() {
        // 传统 的 创建一个 线程 打印
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("我爱北京天安门");
            }
        };
        r1.run();
        System.out.println("****************************");
        // 用 lambda 表达式 的方法
        Runnable r2 = () -> System.out.println("我爱看北京天安门");
        r2.run();
    }
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/10
     * @context: <h3> 语法表达式二 Lambda 需要一个参数 但是没有返回值 </h3>
     * @params :  null
     */
    @Test
    public void test2() {
        //传统的区别
        Consumer<String> con = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        con.accept("谎言和誓言的区别");
        System.out.println("**************************");
        //使用lambda
        Consumer<String> con2 = (String s) -> {
            System.out.println(s);
        };
        con2.accept("给你一拳,再给你一拳");
    }
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/10
     * @context: <h3>语法格式三:数据类型可以省略,因为可以用编译器推算的出,称为 :”类型推断“ </h3>
     * @params :  null
     */
    @Test
    public void Test3() {
        //使用lambda 还可以再次简化
        Consumer<String> con2 = (String s) -> {
            System.out.println(s);
        };
        con2.accept("给你一拳,再给你一拳");
        //类型也可以省去
        Consumer<String> con1 = (s) -> {
            System.out.println(s);
        };
        con1.accept("我闪避,闪避 miss");
    }
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/10
     * @context: <h3> 类型推断的例子</h3>
     * @params :  null
     */
    @Test
    public void Test4() {
        List<String> list = new ArrayList<>();
        int[] arrpub = {
                1, 2, 3
        };
    }
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/10
     * @context: <h3>语法格式四:Lambda 只需要一个参数的时候,参数的小括号也可以省去</h3>
     * @params :  null
     */
    @Test
    public void Test5() {
        //类型也可以省去
        Consumer<String> con1 = (s) -> {
            System.out.println(s);
        };
        con1.accept("我闪避,闪避 miss");
        //参数只有一个小括号也可以省去
        Consumer<String> con2 = s -> {
            System.out.println(s);
        };
        con2.accept("我闪避,闪避 miss");
    }
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/10
     * @context: <h3>语法格式五 Lambda 需要两个以上的参数,多条执行语句,且可以有返回值 </h3>
     * @params :  null
     */
    @Test
    public void Test6() {
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                System.out.println(o1);
                System.out.println(o2);
                return o1.compareTo(02);
            }
        };
        System.out.println(com1.compare(12, 21));
        System.out.println(" ***************");
        Comparator<Integer> com2 = (o1, o2) -> {
            System.out.println(o1);
            System.out.println(o2);
            return o1.compareTo(02);
        };
        System.out.println(com2.compare(12, 21));
    }
    /**
     * @return :  * @return : null
     * @author : <h2>冷环渊</h2>
     * @date : 2021/12/11
     * @context: <h3>语法格式六:当Lambda体 只有一条语句的时候,return 与大括号若有都可以忽略 </h3>
     * @params :  null
     */
    @Test
    public void Test7() {
        Comparator<Integer> com1 = (o1, o2) -> {
            return o1.compareTo(o2);
        };
        System.out.println(com1.compare(12, 6));
        System.out.println("*********************");
        Comparator<Integer> com2 = (o1, o2) -> o1.compareTo(o2);
        System.out.println(com2.compare(12, 21));
    }
    @Test
    public void Test8() {
        Consumer<String> con1 = s -> {
            System.out.println(s);
        };
        con1.accept("想你的夜~~~~~~~~~");
        System.out.println("********************");
        Consumer<String> con2 = s -> System.out.println(s);
        con2.accept("我给你一拳");
    }
}

今天我们就先学习到这里,


总结

我们认识了 java8 新加入的语法,


简化了 一些重复且固定的代码,增强了代码的简洁度

缺点,降低了代码的可读性



相关文章
|
17天前
|
存储 Java 开发者
什么是java的Compact Strings特性,什么情况下使用
Java 9引入了紧凑字符串特性,优化了字符串的内存使用。它通过将字符串从UTF-16字符数组改为字节数组存储,根据内容选择更节省内存的编码方式,通常能节省10%至15%的内存。
|
26天前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
42 6
|
26天前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
28天前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
1月前
|
并行计算 Java 编译器
深入理解Java中的Lambda表达式
在Java 8中引入的Lambda表达式,不仅简化了代码编写,还提升了代码可读性。本文将带你探索Lambda表达式背后的逻辑与原理,通过实例展示如何高效利用这一特性优化你的程序。
|
1月前
|
搜索推荐 Java API
探索Java中的Lambda表达式
本文将深入探讨Java 8引入的Lambda表达式,这一特性极大地简化了代码编写,提高了程序的可读性。通过实例分析,我们将了解Lambda表达式的基本概念、使用场景以及如何优雅地重构传统代码。文章不仅适合初学者,也能帮助有经验的开发者加深对Lambda表达式的理解。
|
1月前
|
Java
探索Java中的Lambda表达式
【10月更文挑战第37天】本文将带你深入理解Java的Lambda表达式,从基础语法到高级特性,通过实例讲解其在函数式编程中的应用。我们还将探讨Lambda表达式如何简化代码、提高开发效率,并讨论其在实际项目中的应用。
|
1月前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
1月前
|
分布式计算 Java API
Java 8引入了流处理和函数式编程两大新特性
Java 8引入了流处理和函数式编程两大新特性。流处理提供了一种声明式的数据处理方式,使代码更简洁易读;函数式编程通过Lambda表达式和函数式接口,简化了代码书写,提高了灵活性。此外,Java 8还引入了Optional类、新的日期时间API等,进一步增强了编程能力。这些新特性使开发者能够编写更高效、更清晰的代码。
35 4
|
1月前
|
Java API 开发者
Java中的Lambda表达式与函数式编程####
在Java的演变过程中,Lambda表达式和函数式编程的引入无疑是一次重大的飞跃。本文将深入探讨Lambda表达式的定义、用法及优势,并结合实例说明如何在Java中利用Lambda表达式进行函数式编程。通过对比传统编程方式,揭示Lambda表达式如何简化代码、提高开发效率和可维护性。 ####