Java8之前世今生(预)

1.发展史简介

从1996年**Java 1.0** *(其实应该说JDK1.0)* 版本开始发布,到2004年**Java 5.0**的发布,再到2014年**Java 8.0**的发布,
Java 8.0的发布算是历史上改变**最深远**的一次,目前已经发布到了Java 10.0,因博主知识量有限,就暂时只介绍Java8.0的内容。

2.为什么要用Java8

思前想后,我觉得应该是用Java8的原因我把它分为两个部分,
 a.因为Java8的一些核心特性,Lambda,Stream,函数式编程。这些使用起来很是方便。
 b.使用Java8 就是在保护自己的程序生涯,如果都不用Java8优秀的性能,以Java8之前版本的能力,
 已经不足应付很多场景,很可能被同样运行在JVM上的竞争对手语言(如Scala 或Groovy)取代(引自Java8实战)。

3. 名词解释

  • Lambda : 有的书中称之为匿名函数,且不管它叫什么,能用之皆可。
  • 函数式编程:Java8里面将代码传递给方法的功能(同时也能够返回代码并将其包含在数据结构中),还让我们能够使用一套新技巧,通常称为函数编程。这个引自Java8实战,本系列博客中,会大量的引入Java8实战和Java8函数式编程 中的内容。
  • 行为参数化:简而言之就是把某种行为(一段代码),当作参数一样传递给某个方法。
  • 函数式接口:接口里面只定义了一个抽象方法的接口,都可以称之为抽象接口 。

4.Java8中常用的函数式接口

函数式接口函数描述符原始类型特化
Predicate<T>T->booleanIntPredicate,LongPredicate,DoublePredicate
Consumer<T>T->voidIntConsumer,LongConsumer,DoubleConsumer
Function<T,R>T->RIntFunction<R> IntToDoubleFunction ,...
Supplier<T>()->TIntSupplier, DoubleSupplier,...
UnaryOperator<T>T->TIntUnaryOperator,LongUnaryOperator,...
BinaryOperator<T>(T,T)->TIntBinaryOperator,LongBinaryOperator,...
BiPredicate<T,U>(T,U)->boolean
BiConsumer<T,U>(T,U)->voidObjIntConsumer<T>,LongBinaryOperator,...
BinaryOperator<T>(T,T)->TIntBinaryOperator,LongBinaryOperator,...
暂时先列举这些接口,这些接口在后续编程中非常重要,后续会做详细解释。

5.小练习

a.判断下面的接口是否为函数式接口

1.public interface Desk{
     void test();
     boolean another(String string);
}
2.public interface Consumer<T>{
    void accept(T t);
    default Consumer<T> andThen(Consumer<? super T> after){
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}
3.public interface Capacity{
   int test();
}

b. 根据下列写的函数表达式,你会使用Java自带的哪个函数式接口.
1. ()-> R
2. (R,R)->R
3. T-> void
4. T->boolean
5. T->R
练习的答案,以及讲解中的代码都能在我的GitHub上面找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值