java8 Lambda表达式

Lambda是java8最重要的新特性之一,Lambda是java8支持函数式接口编程的核心
它允许把函数作为一个方法的参数
特征:
1:无需声明参数类型,编译器可以识别
2 :如果只有一个参数就不需要圆括号,但多个参数需要圆括号
3: 如果要计算的代码无法放在一个语句,那么可以使用大括号括起来‘
4 : 如果只有一个表达式,则编译器会自动返回值,大括号需要指明表达式返回了一个值
注意:
5 : lambda表达式只能引用标记了final的外层static常量或者处于内层的final常量


public class LambdaTest1 {
    public static void main(String[] args){ 
    
        //无需返回值,编译器会自动返回
        Algorithm add = (int a,int b) -> a + b;
        
        //无需指定参数类型和返回值,编译器可以识别
        Algorithm sub = (a , b) -> a- b;
        
        //大括号指明表达式返回了一个值
        Algorithm multi = (a,b)->{return a+b;};
        
        //不需要大括号和返回值
        Algorithm div  =( a , b )->  a/b;

        System.out.println(add.operation(2,3));
        System.out.println(sub.operation(10,4));
        System.out.println(multi.operation(13,2));
        System.out.println(div.operation(100,40));


        final String word1 = "hello java!";     //内层的final常量
        Say temp = s -> System.out.println(s);
        temp.say(word1);    //使用了内层的final常量
        temp.say(word2);    //使用外层final的static常量
    }
    static final String word2 = "hello world!";   //外层final的static常量
}

interface Algorithm{
    int operation(int a , int b);
}

interface Say{
    void say(String s);
}

以lambda作为方法的参数



public class LambdaTest2 {

//因为 p 是一个函数式接口,所以可以利用lambda表达式代替
    public static void do1(String s , Print p){ 
            for(int j = 0 ; j != 20 ;++j){
                p.print(s);
            }
    }
    public static void main(String[] args){
            LambdaTest2.do1("杨某是狗",(s)->System.out.println(s));
    }
}
interface Print{
    void print(String s);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值