JAVA8新特性笔记整理(一)

声明

以下笔记均来自笔者在学习尚硅谷课程的笔记。想仔细学习的建议观看尚硅谷的视频

Lambda表达式

什么是Lambda表达式

Lambda表达式是一种匿名函数,它没有名称,但具有参数列表、函数体和可能的异常列表。

Lambda表达式的本质是作为函数式接口的实例。

Lambda表达式有什么优点

使代码更加简洁,提高代码的可读性

Lambda表达式的语法规则

左边括号()作为形参列表,类型推断:可以省略形参的类型参数。

->把()和方法体隔开

右边是方法体。

语法格式:如果左边只有一个·参数可以省略括号。如果右边只有一条语句或者只是一条return则可以省略{}或者省略return

默认方法

接口里面可以有实现方法,加上 default关键字

函数式接口

如果一个接口只有一个抽象方法则是函数式接口

四大核心函数式接口

消费型接口

Consumer<T> 方法 void accept(T t)

供给型接口

Supplier<T> T get()

函数型接口

Function<T> 返回R类型的对象 R apply(T t)

判断型接口

Predicate<T> boolean test(T t)确定类型为T的对象是否满足约束

其他接口

方法引用

方法引用是一种更简洁的lambda表达式,用于调用已经存在的方法。它的语法格式如下:

  • 静态方法引用:ClassName::staticMethodName类::静态方法
  • 实例方法引用:object::instanceMethodName对象::实例方法
  • 类::非静态·方法

方法引用可以使代码更加简洁,易读易懂,减少了冗余代码的出现,提高了代码的可维护性和可读性。在Java 8中,方法引用可以应用于各种场景,包括对集合的操作、事件处理、GUI编程等。

构造器引用和数组引用

构造器引用

构造器引用的语法规则如下:

  • ClassName::new

其中,ClassName是要调用的构造函数所属的类的名称。例如,要调用String类的构造函数创建一个空字符串,可以使用以下语法:

Supplier<String> supplier = String::new;
String str = supplier.get();

数组引用

数组引用是一种方法引用,用于调用已经存在的数组的方法。它的语法规则如下:

  • TypeName[]::methodName

其中,TypeName是要调用的方法所属的数组类型的名称,methodName是要引用的方法的名称。

例如,要引用Arrays类的sort(int[] a)方法对一个整数数组进行排序,可以使用以下语法:

int[] arr = {3, 2, 1};
Arrays.sort(arr);

要使用数组引用来完成同样的操作,可以使用以下语法:

int[] arr = {3, 2, 1};
IntConsumer intConsumer = Arrays::sort;
intConsumer.accept(arr);

这个例子中,IntConsumer是一个函数式接口,用于接受一个int[]类型的参数,并执行某个操作。Arrays::sort引用了Arrays类的sort方法,它等价于以下的lambda表达式:

IntConsumer intConsumer = arr -> Arrays.sort(arr);

数组引用可以使代码更加简洁,易读易懂,减少了冗余代码的出现,提高了代码的可维护性和可读性。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值