• java--lambda表达式


    lambda表达式是java8的新特性,可以被看作 使用精简语法的 内部类。

    基础语法

    (parameters) -> expression
    或
    (parameters) ->{ statements; }

    无参数无返回值 lambda:

    import java.io.*;
    
    public class Test {
        public static void main(String[] args) {
    
            Person p = () -> {System.out.println("带大括号"); };
            p.say();
    
            Person p1 = () -> System.out.println("不带大括号"); //省略大括号的前提:只有一行语句,如果是表达式,会被执行返回结果,消除(省略)return
            p1.say();
    
        }
    }
    
    /**
     *使用 lambda 表达式前提:
     * 1.必须是函数式接口(有且只有一个 抽象方法)
     * 2.可以有常量
     */
    interface Person {
        //int num = 12;
        void say();
    }

    无参数有返回值 lambda:

    import java.io.*;
    
    public class Test {
        public static void main(String[] args) {
    
            Person p = () -> {return "带括号返回值"; };
            System.out.println(p.say());
    
            Person p1 = () -> "不带大括号返回值"; //省略大括号前提是:只有一行语句,如果是表达式,执行返回结果,消除(省略)return
            System.out.println(p1.say());
    
        }
    }
    
    /**
     *使用 lambda 表达式前提:
     * 1.必须是函数式接口(有且只有一个 抽象方法)
     */
    interface Person {
        String say();
    }

    有参数有返回值 lambda:

    import java.io.*;
    
    public class Test {
        public static void main(String[] args) {
    
            Person p1 = (String s) -> {return "声明类型+带括号" + s; };
            System.out.println(p1.say("hello"));
    
            Person p2 = (s) -> "省略声明类型" +s;
            System.out.println(p2.say("hello"));
    
            Person p3 = s -> "省略声明类型+省略括号" + s;
            System.out.println(p3.say("hello"));
        }
    }
    
    /**
     *使用 lambda 表达式前提:
     * 1.必须是函数式接口(有且只有一个 抽象方法)
     */
    interface Person {
        String say(String s);
    }

     变量作用域

     可以引用 类常量、局部常量、接口常量,但是不能修改

    import java.io.*;
    
    public class Test {
    
        final static String str1 = "str1:标记final外层 类变量;";
        static String str2 = "str2:可以省略final,隐性具有final含义;";
    
        public static void main(String[] args) {
    
            final String str3 = "str3:局部变量。";
    
            Person p = () -> System.out.println(str1 + str2 + str3 + Person.str4);
            p.say();
    
        }
    }
    
    
    interface Person {
        String str4 = "str4:接口变量"; // 隐性final
        void say();
    }

    如果尝试对str4修改,报错:

    error: cannot assign a value to final variable str4

  • 相关阅读:
    北京Uber优步司机奖励政策(2月26日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(2月26日)
    北京最牛的医院 最牛的科室排名出炉
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(2月25日)
    北京Uber优步司机奖励政策(2月25日)
    成都Uber优步司机奖励政策(2月25日)
    优步(UBER)发布2016年春节出境游出行报告
    cpp
    cpp
    Linux
  • 原文地址:https://www.cnblogs.com/zhzhlong/p/10120454.html
Copyright © 2020-2023  润新知