JDK1.8新特性-lambda表达式与接口中的默认方法和静态方法

本文详细介绍了Java中的Lambda表达式,包括无参数、带参数、单行或多行代码块、有返回值以及在接口中使用默认方法和静态方法的情况,展示了其简洁代码和接口设计的应用.
摘要由CSDN通过智能技术生成

目录

1、Lambda表达式

(1)没有参数时使用Lambda表达式

(2)带参数时使用Lambda表达式

(3)代码块中只一句代码时使用Lambda表达式

(4)代码块中有多句代码时使用Lambda表达式

(5)有返回值的代码块

(6)参数中使用final关键字

2、接口中的默认方法和静态方法


1、Lambda表达式


Lambda表达式(也称为闭包)Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据。Lambda表达式用于简化Java中接口式的匿名内部类。被称为函数式接口的概念。函数式接口就是一个具有一个方法的普通接口。像这样的接口,可以被隐式转换为lambda表达式。
语法:
(参数1,参数2...) -> { ... }

优点:1.代码更加简洁

           2.不会单独生成一个.class文件


(1)没有参数时使用Lambda表达式

用法示例: 

public class Demo {
    public static void main(String[] args) {
//(1)没有参数时使用Lambda表达式
        student s=()->
        {System.out.println("我爱学习");}
                ;
        s.study();


    }
}
//只有一个抽象方法的接口
interface student{
    public void study();

}

运行结果:

我爱学习 


(2)带参数时使用Lambda表达式

用法示例: 

public class Demo {
    public static void main(String[] args) {

//(2)带参数时使用Lambda表达式
student s2=(String subject)->{
    System.out.println("学习" + subject);
};
s2.study("math");



    }
}
//只有一个抽象方法的接口
interface student{
    public void study(String subject);

}

 运行结果:

学习math


(3)代码块中只一句代码时使用Lambda表达式

用法示例:

public class Demo {
    public static void main(String[] args) {


//(3)代码块中只一句代码时使用Lambda表达式
        student s1=(String subject)->
                System.out.println("我爱学习"+subject);
        //只有一句代码时,{}可以省略
        s1.study("English");



    }
}
//只有一个抽象方法的接口
interface student{
    public void study(String subject);

}

 运行结果:

我爱学习English


(4)代码块中有多句代码时使用Lambda表达式

 用法示例:

public class Demo {
    public static void main(String[] args) {
//(4)代码块中有多句代码时使用Lambda表达式
student s1=(String subject)->{
    System.out.println("我爱学习");
    System.out.println(subject);
};
s1.study("编程");
    }
}
//只有一个抽象方法的接口
interface student{
    public void study(String subject);

}

运行结果:

我爱学习
编程 


(5)有返回值的代码块

用法示例:

public class Demo {
    public static void main(String[] args) {
//(5)有返回值的代码块
student s=()->{
    System.out.println("我爱学习");
    return 10;
};
        System.out.println(s.study());

    }
}
//只有一个抽象方法的接口
interface student{
    public int study();

}

 运行结果:

我爱学习
10

(注意:当返回值只有一句话时,可以不使用大括号,如果写return必须带大括号

例如:

student s=(String subject)->subject==null?1:0;
        System.out.println(s.study(null));

) 

(6)参数中使用final关键字

用法示例: 

public class Demo {
    public static void main(String[] args) {

//(6)参数中使用final关键字 重写时可以不用写类型和final
        student s1=(subject)->
                System.out.println("我爱学习"+subject);
        s1.study("English");


    }
}
//只有一个抽象方法的接口
interface student{
    public void study(final String subject);

}

运行结果:

我爱学习English 


2、接口中的默认方法和静态方法


interface A{

public void eat();
public default void print(){}
public static void method(){}
}
默认方法与静态方法并不影响函数式接口的契约,可以任意使用

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心态特好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值