Java 8 简明教程.doc

Java 8 简明教程.doc

ID:49530772

大小:76.51 KB

页数:21页

时间:2020-03-02

Java 8 简明教程.doc_第1页
Java 8 简明教程.doc_第2页
Java 8 简明教程.doc_第3页
Java 8 简明教程.doc_第4页
Java 8 简明教程.doc_第5页
资源描述:

《Java 8 简明教程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java8的全新特性。 本文由 ImportNew网站的黄小非 翻译自 winterbe。原文作者Benjamin是Pondus软件公司的总工程师,原文内容如下。 引用Java并没有没落,人们很快就会发现这一点欢迎阅读我编写的Java8介绍。本教程将带领你一步一步地认识这门语言的新特性。通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的API有一定的了解,例如:

2、流控制,函数式接口,map扩展和新的时间日期API等等。允许在接口中有默认方法实现Java8允许我们使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法。下面是我们的第一个例子: Java代码 1.interface Formula {  2.    double calculate(int a);  1.   2.    default double sqrt(int a) {  3.        return Math.sqrt(a);  4.    }  5.}  在接口Formula中,除了抽象方法caculate以外,还定义了一个默认方法s

3、qrt。Formula的实现类只需要实现抽象方法caculate就可以了。默认方法sqrt可以直接使用。 Java代码 1.Formula formula = new Formula() {  2.    @Override  3.    public double calculate(int a) {  4.        return sqrt(a * 100);  5.    }  6.};  7.   8.formula.calculate(100);     // 100.0  9.formula.sqrt(16);           // 4.0  formula对象

4、以匿名对象的形式实现了Formula接口。代码很啰嗦:用了6行代码才实现了一个简单的计算功能:a*100开平方根。我们在下一节会看到,Java8还有一种更加优美的方法,能够实现包含单个函数的对象。 Lambda表达式让我们从最简单的例子开始,来学习如何对一个string列表进行排序。我们首先使用Java8之前的方法来实现: Java代码 1.List names = Arrays.asList("peter", "anna", "mike", "xenia");  2.   3.Collections.sort(names, new Comparator

5、g>() {  4.    @Override  5.    public int compare(String a, String b) {  6.        return b.compareTo(a);  7.    }  8.});  静态工具方法Collections.sort接受一个list,和一个Comparator接口作为输入参数,Comparator的实现类可以对输入的list中的元素进行比较。通常情况下,你可以直接用创建匿名Comparator对象,并把它作为参数传递给sort方法。 除了创建匿名对象以外,Java8还提供了一种更简洁的方式,Lambda表达式

6、。 Java代码 1.Collections.sort(names, (String a, String b) -> {  2.    return b.compareTo(a);  3.});  你可以看到,这段代码就比之前的更加简短和易读。但是,它还可以更加简短: Java代码 1.Collections.sort(names, (String a, String b) -> b.compareTo(a));  只要一行代码,包含了方法体。你甚至可以连大括号对{}和return关键字都省略不要。不过这还不是最短的写法: Java代码 1.Collections.sort(nam

7、es, (a, b) -> b.compareTo(a));  Java编译器能够自动识别参数的类型,所以你就可以省略掉类型不写。让我们再深入地研究一下lambda表达式的威力吧。 函数式接口Lambda表达式如何匹配Java的类型系统?每一个lambda都能够通过一个特定的接口,与一个给定的类型进行匹配。一个所谓的函数式接口必须要有且仅有一个抽象方法声明。每个与之对应的lambda表达式必须要与抽象方法的声明相匹配。由于默认方法不是抽象的,因此你可以在你的函数式接口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。