java中文简明教程

java中文简明教程

ID:6352653

大小:225.00 KB

页数:18页

时间:2018-01-11

java中文简明教程_第1页
java中文简明教程_第2页
java中文简明教程_第3页
java中文简明教程_第4页
java中文简明教程_第5页
资源描述:

《java中文简明教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、欢迎阅读我编写的Java8介绍。本教程将带领你一步一步地认识这门语言的新特性。通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的API有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等。允许在接口中有默认方法实现Java8允许我们使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法。下面是我们的第一个例子:?1234567interfaceFormula{    

2、doublecalculate(inta);     defaultdoublesqrt(inta){        returnMath.sqrt(a);    }}在接口Formula中,除了抽象方法caculate以外,还定义了一个默认方法sqrt。Formula的实现类只需要实现抽象方法caculate就可以了。默认方法sqrt可以直接使用。?123456789Formulaformula= newFormula(){    @Override    publicdoublecalcula

3、te(inta){        returnsqrt(a* 100);    }}; formula.calculate(100);     //100.0formula.sqrt(16);           //4.0formula对象以匿名对象的形式实现了Formula接口。代码很啰嗦:用了6行代码才实现了一个简单的计算功能:a*100开平方根。我们在下一节会看到,Java8还有一种更加优美的方法,能够实现包含单个函数的对象。回到顶部Lambda表达式让我们从最简单的例子开始,来学习如何对

4、一个string列表进行排序。我们首先使用Java8之前的方法来实现:?12345678Listnames=Arrays.asList("peter", "anna", "mike", "xenia"); Collections.sort(names, newComparator(){    @Override    publicintcompare(Stringa,Stringb){        returnb.compareTo(a);    }});静态工具

5、方法Collections.sort接受一个list,和一个Comparator接口作为输入参数,Comparator的实现类可以对输入的list中的元素进行比较。通常情况下,你可以直接用创建匿名Comparator对象,并把它作为参数传递给sort方法。除了创建匿名对象以外,Java8还提供了一种更简洁的方式,Lambda表达式。?123Collections.sort(names,(Stringa,Stringb)->{    returnb.compareTo(a);});你可以看到,这段代

6、码就比之前的更加简短和易读。但是,它还可以更加简短:?1Collections.sort(names,(Stringa,Stringb)->b.compareTo(a));只要一行代码,包含了方法体。你甚至可以连大括号对{}和return关键字都省略不要。不过这还不是最短的写法:?1Collections.sort(names,(a,b)->b.compareTo(a));Java编译器能够自动识别参数的类型,所以你就可以省略掉类型不写。让我们再深入地研究一下lambda表达式的威力吧。回到顶部函

7、数式接口Lambda表达式如何匹配Java的类型系统?每一个lambda都能够通过一个特定的接口,与一个给定的类型进行匹配。一个所谓的函数式接口必须要有且仅有一个抽象方法声明。每个与之对应的lambda表达式必须要与抽象方法的声明相匹配。由于默认方法不是抽象的,因此你可以在你的函数式接口里任意添加默认方法。任意只包含一个抽象方法的接口,我们都可以用来做成lambda表达式。为了让你定义的接口满足要求,你应当在接口前加上@FunctionalInterface标注。编译器会注意到这个标注,如果你的接

8、口中定义了第二个抽象方法的话,编译器会抛出异常。举例:?12345678@FunctionalInterfaceinterfaceConverter{    Tconvert(Ffrom);} Converterconverter=(from)->Integer.valueOf(from);Integerconverted=converter.convert("123");System.out.println(converted);    

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

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

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