java8十大特性

Java 8笔记

1、Lambda表达式

1.1、什么叫Lambda表达式:

Lambda表达式就是一段带有参数的可执行语句块

1.2、Lambda表达式在java语言中引入了一个新的语法元素和操作符;

这个操作符为“->”,该操作符被称为Lambda或箭头操作符;它将Lambda

Fenwick两个部分:

左侧:指定了Lambda表达式需要的所有参数

右侧:指定了Lambda体,即Lambda所需要执行的功能

1.3、Lambda表达式的语法:

1.3.1、语法格式一:无参、无返回值,Lambda只需要一条语句

Runnable r1=() ->System.out.println(“hello word”);

1.3.2、语法格式二:带一个参数

Consumer<String>  fun=(args) ->System.out.println(args);

1.3.3、语法格式三:Lambda只需要一个参数时,参数的小括号可以省略

Consumer<String>  fun=args ->System.out.println(args);

1.3.4、语法格式四:Lambda只需要一个参数时,并且有返回值

BinaryOperator<Long> bo=(x,y) ->{

System.out.println(“实现函数式接口方法”);

return x+y;

};

1.3.5、语法格式五:当Lambda体只有一条语句是,大括号和return可以省略

BinaryOperator<Long> bo=(x,y) ->x+y

1.3.6、语法格式六:

BinaryOperator<Long> bo=(Long x,Long y) ->{

System.out.println(“实现函数式接口方法”);

return x+y;

};

//Lambda体参数类型可以省略,因为可有编译器推断的出来,称为类型推断

简单的举个例子:

*下面代码是老版本的Java中是如何排列字符串的:

List<String>  names=Arrays.asList(“peter”,”anna”,”mike”,”xenia”);

Collections.sort(names,new Comparator<String>);

@Override

Public int compare(String  a,String  b){

Return b.compareTo(a);

}

//只需要给静态方法Collecyions.sort传入一个List对象以及一个比较起来按指 定顺序排列。通常做法都是创建一个匿名的比较器对象然后将其传递给sort 方法

*在java8中就没必要使用这种传统的匿名对象的方式,java8提供了更简洁的 语法,lambda表达式:

Collections sort(names,(a,b) ->b.compare(a))

2、函数式接口

2.1、什么是函数式接口:

2.1.1、只包含一个抽象方法的接口,称为“函数式接口”;

2.1.2、你可以通过Lambda表达式来创建该接口的对象,(若Lambda表达式抛出一 个受检查时异常,那么该异常需要在目标接口的抽象方法上进行声明)

2.1.3、可以在任意函数式上使用@FunctionalInterface注解,该注解可以检查它是否 是一个函数式接口,

2.2、java8中常用的全新接口

2.2.1、Predicate接口(断言型接口)

          Predicate接口只有一个参数,返回boolean类型,该接口包含多种默认方法   来将Predicate组合成其他复杂的逻辑(比如:与,或,非),包含方法boolean test(T t):

  代码如下:

   Predicate<String> predicate=(s) ->s.length()>0;

  Predicate.test(“foo”);//true

Predicate.negate().test(“foo”);//false

2.2.2、Function<T,R>接口(函数型接口):T代表参数,R代表返回值

           Function接口有一个参数并且返回一个结果,并附带了一些可以和其他函 数组合的默认方法(compose,andThen),包含方法 R apply (T t);

   代码如下:

Function<String,Integer> tolnteger=integer::valueOf;

Function<String,String> backToString=tointeger.andThen(String::valueOf);

backToString.apply(“123”);//123

2.2.3、Supplier接口(供给型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值