java8 新特性 Lambda

java8 新特性

主要方面

  • Lambda 表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)
  • 方法引用:提供了非常有用的语法,可以直接引用已有java类或对象(实例)的方法或构造器。与 Lambda联合使用,方法引用可以使语言的构造更加紧凑简洁,减少冗余代码。
  • 默认方法:默认方法就是一个在接口里有了一个实现的方法。
  • Date Time Api:加强对日期和时间的处理
  • Optional类:该类已经是java8类库中的一部分,主要解决空指针异常。

关于 Lambda 表达式

Lambda表达式,也可称为闭包。它允许函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda表达式可以使代码变得更加简洁紧凑

语法

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

lambda表达式的重要特征

  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值
  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数必须定义圆括号
  • 可选大括号:如果主体包含一个语句,则不需要大括号
  • 可选的返回关键字:如果主体只有一个表达式 ,返回值则会自动返回值,大括号需要定义指定表达式返回了一个数值。

示例

// 不需要参数,返回值为 5
() -> 5

// 接收一个参数,返回其2倍
x -> x*2

// 接收2个参数,返回他们的差
(x,y) -> x-y

// 接收两个int型整数,返回他们的和
(int x,int y) -> x+y

// 接收一个string对象,在控制台打印,不返回任何值(看起来像是返回 void)
(String x) -> System.out.print(x)

需要注意的点

  • Lambda 表达式主要用来定义行内执行的方法类型的接口,例如一个简单方法接口。
  • Lambda 表达式免去了使用匿名方法的麻烦,并且给予了java简单但是强大的函数化的编程能力。
  • Lambda 表达式只能引用标记了 final 的外层局部标签。即不能在 Lambda 内部修改定义在域外的局部变量。
  • Lambda 表达式本是对存在单一方法接口的实现的简化版,是为了使代码更加简洁。是一个匿名函数

示例

// 使用 java 7 排序
private void sortUsingJava7(List<String> names){   
  Collections.sort(names, new Comparator<String>() {
     @Override
     public int compare(String s1, String s2) {
        return s1.compareTo(s2);
     }
  });
}

// 使用 java 8 排序
private void sortUsingJava8(List<String> names){
  Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
}


interface student{
	public void say();
}
Student student = new Student() {
        @Override
        public void say() {
            System.out.println("学生");
        }
    };
// 等价
Student student1 = ()->System.out.println("学生");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值