JAVA8 新特性之lambda表达式

lambda表达式

一、lambda概述:

 lambda表示数学符号"λ",计算机领域中λ代表"λ演算",表达了计算机中最基本的概念: "调用"和"转换"。

二、为什么使用lambda

  1.Java是面向对象的语言,不能像函数式语言那样嵌套定义方法。
  2.Java的匿名内部类只能存在于创建它的线程中,不能运行在多线程中,无法充分利用多核的硬件优势。
  3.匿名内部类的缺点还有:
      3.1 语法相对复杂。
      3.2 在调用内部类的上下文中,指引和this的指代空易混淆。
      3.3 类加载和实例创建语法不可避免。
      3.4 不能引用外部的非final对象。
      3.5 不能抽象化控制流程。

三、lambda的语法包括三部分:

   1. 参数列表
   2. 箭头符号"->"
   3. 代码块。

【demo】

package top.hao456.java8;

public class Test01_lambda01 {

    public static void main(String[] args) {
        /**
         * 使用匿名内部类方式实现Runnable接口,重写 run方法
         */
        new Runnable() {
            @Override
            public void run() {
                System.out.println("匿名内部类实现Runnable接口");
            }
        }.run();



        /**
         * 用lambda简化Runnable接口的实现方法。
         */
        int i = 1;
        Runnable runnable = () -> {
            System.out.println("使用lambda表达式实现Runnable接口");
            System.out.println("i="+i);
            //i++; //编译错误,在代码块中只能使用外部方法变量,不能改变外部变量的值,这和java8之前是一样的
        };

        runnable.run();//调用run方法
    }

}

【案例】使用lambda实现自定义接口,来模拟登录

package top.hao456.java8;


public class Test02_lambda02 {

    public static void main(String[] args) {

        /**
         * 1.使用匿名内部类方法实现Action接口
         */

        new Action() {
            @Override
            public void login(String username,String password) {
                System.out.println(username+"登录成功。");
            }
        }.login("liming","123456");;



        /**
         * 2.使用lambda表达式方式实现Action接口
         */


        Action action = (String username,String password) -> {
            System.out.println(username+"登录成功。");//out:使用lambda表达式方式实现Action接口中的方法
        };

        action.login("liming","123456");//调用接口中方法

    }


    /**
     * 自定义登录接口,该接口中只有一个接口方法,我们称这种接口为函数接口
     */
    public static interface Action{
        void login(String username,String password);
    }

}

本文资源代码地址:

https://github.com/gitHjx/java8.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值