最代码广告位
fengzf的gravatar头像
fengzf2019-12-02 11:49:59
Java 8新特性——Lambda表达式

Lambda允许把函数作为一个方法的参数使用,由编译器推断并转换为常规的代码,实现同样的功能代码更简洁。

语法:

         (parameters) -> expression

         (parameters) -> { statements;}

重要特征:

         1、不需要声明参数类型,编译器可以统一识别参数值

         例如:()->5  不需要参数,返回值5

          (x,y) -> x - y  没有声明参数类型,返回x - y的差值

         2、当有一个参数时无需定义括号,当有两个参数时必须定义括号

         例如:x -> 2 * x   一个参数,不用定义括号

               (x,y) -> x - y  两个参数,必须有括号

         3、主体包含一个语句,就不需要大括号

         4、如果主体只有一个表达式返回值则编译器会自动返回值

public class Java8LambdaDemo {

     public static void main(String args[]) {
         Java8LambdaDemo java8LambdaDemo = new Java8LambdaDemo();
        //类型声明
         Calculator addtion = (int a,int b) ->a+b;
         //不用类型声明
         Calculator subtraction = (a,b) -> a-b;
         //大括号的返回语句
         Calculator multiplication = (int a,int b) -> {return a*b; };
         //没有大括号的返回语句
         Calculator division = (int a,int b) -> a/b;

         System.out.println("100+50="+java8LambdaDemo.operate(100,50,addtion));
         System.out.println("100-50="+java8LambdaDemo.operate(100,50,subtraction));
         System.out.println("100*50="+java8LambdaDemo.operate(100,50,multiplication));
         System.out.println("100/50="+java8LambdaDemo.operate(100,50,division));
      }

    /**
     * 算数运算接口
     */
    interface  Calculator{
         int  calculate(int a,int b);
    }

    /**
     *操作方法
     */
    private int operate(int a,int b,Calculator calculator){
        return calculator.calculate(a,b);
    }
}

Java 8新特性——Lambda表达式Java 8新特性——Lambda表达式测试结果:

Java 8新特性——Lambda表达式作用域可靠棋牌_[官网入口]:可以在直接在Lambda表达式中访问外层的局部变量,但表达式内层不能修改定义在表达式外的局部变量,否则会有编译错误。lambda表达式内的局部变量不允许与外部变量重名。

public class Java8LambdaScopeDemo {
     public static void main(String args[]) {
         final String salutation = "hello ";
         String myName = "I am Lambda ~";
         String today = "2019/12/02";
         SayHello greetingService = message -> {
             System.out.println(salutation + message + myName);
             //此处修改today出现变异错误
             //today = "2019/12/03";
             //此处定义的局部变量会出现编译错误
             //String myName = "Java";
         };

         greetingService.say("World ! ");
      }
     interface SayHello{
         /**
          * 打招呼方法
          * @param message
          */
         void say(String message);

     }
}

Java 8新特性——Lambda表达式Java 8新特性——Lambda表达式

 


打赏

分享到:

最近浏览
沙特小王子 LV81月17日
月亮月亮
shaoyu0215 LV11月17日
星星
沙漠鱼 LV121月17日
月亮月亮月亮
fengyumeluo LV111月16日
月亮月亮星星星星星星
sky丶小十 LV41月16日
月亮
397312607 LV21月15日
星星星星
心印语 LV91月15日
月亮月亮星星
wangyu2019 LV111月14日
月亮月亮星星星星星星
最代码故戌 LV201月14日
太阳月亮
maojianyun LV291月12日
太阳月亮月亮月亮星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友

页面底部区域 foot.htm