Java8的新特性
第一种是默认方法:在Java 8中,可以通过使用default关键字来添加默认的方法实现。 接口的实现类可以直接使用这些默认的方法,同时还可以重写默认的方法,这不是强制性的重写。
Java 8接口引入的第二种方法是静态方法。 这一点与类中的静态方法相似,可以在接口中使用static关键字定义静态方法。如果我们要调用接口定义的静态方法,只需使用接口名就可以访问这些静态方法。比如:
从lambda表达式的一般语法可以看出来,还是挺符合上面给出的非精确版本的定义–“一段带有输入参数的可执行语句块”。
上面的lambda表达式语法可以认为是最全的版本,写起来还是稍稍有些繁琐。别着急,下面陆续介绍一下lambda表达式的各种简化版。
1. 参数类型省略–绝大多数情况,编译器都可以从上下文环境中推断出lambda表达式的参数类型。这样lambda表达式就变成了:
2. 当lambda表达式的参数个数只有一个,可以省略小括号。lambda表达式简写为:
3. 当lambda表达式只包含一条语句时,可以省略大括号、return和语句结尾的分号。lambda表达式简化为:
三、java.util.Optional类
Java 8在java.util包中新增了Optional类,Optional类是一个可以包含或不可以包含非空值的容器对象。
每一个Java项目,最主要的重复语句就是检查空指针异常NullPointerException。我们使用任何对象,都需要检查此对象是否为空,如果对象不为空我们才能执行处理语句。 Optional类像是一个容器,它保存一个类型为的值或是null值。通过使用Optional类的isPresent()方法,我们可以检查指定的对象是否为空
四、日期时间API
Java 8使用了JSR 310规范,新增了java.time包。 在Java 8版之前,如果我们想格式化日期,必须使用SimpleDateFormat类,用它格式化输入的日期类。而Java 8引入了以下的新日期时间类:
LocalTime,LocalDate ,LocalDateTime ,OffsetDate ,OffsetTime ,OffsetDateTime
五、并行数组排序
在Java 7中已经有了Arrays.sort()方法可对对象进行排序,
而在Java 8中,引入了新的并行排序,它比前者的排序速度更快,且遵循了Java 7引入的Fork/Join框架,可以把排序任务分配给线程池中可用的多个线程。 Java 8在java.util.Arrays类中新增了并行排序功能,能够更充分地利用多线程机制。
JDK各版本引入的新特性可以参见:http://www.cnblogs.com/langtianya/p/3757993.html
Java8的新特性的更多相关文章
- 简单了解JAVA8的新特性
JAVA8新特性会颠覆整个JAVA程序员的编程习惯 甚至如果您坚守JAVA7之前的编程习惯,今后你看比较年轻的程序员写的JAVA代码都会无法理解 所以为了保证不脱钩,我觉得有必要学习JAVA8的新特性 ...
- java8的新特性以及用法简介
1. 介绍 2 接口的默认方法 2 lambda表达式 2.1 函数式接口 2.2 方法与构造函数引用 2.3 访问局部变量 2.4 访问对象字段与静态变量 3. 内建函数式接口 3.1 Predic ...
- Java8常用新特性实践
前言: 时下Oracle开速迭代的Java社区以即将推出Java10,但尴尬的是不少小中企业仍使用JDK7甚至JDK6开发. 从上面列出的JDK8特性中我们可以发现Java8的部分特性很明显的是从Sc ...
- Java8 Stream新特性详解及实战
Java8 Stream新特性详解及实战 背景介绍 在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了.为此, ...
- Java8的新特性以及与C#的比较
函数式接口 VS 委托 在C中,可以使用函数指针来存储函数的入口,从而使得函数可以像变量一样赋值.传递和存储,使得函数的调用变得十分灵活,是实现函数回调的基础.然而函数指针不存在函数的签名信息,甚至可 ...
- java5、java6、java7、java8的新特性
Java5: 1.泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数 ...
- Java8部分新特性的学习
Java8中的新特性 一.Lambda表达式 Lambda表达式可以理解为一种可传递的匿名函数:它没有名称,但又参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. 匿名:和匿名类类似的,它 ...
- java7与java8的新特性
java7 新特性: 1. switch 里面的 case 条件可以使用字符串了. 2. 运用 List\tempList = new ArrayList<>(); 即泛型实例化类型自动判 ...
- Java8接口新特性
概述 Java 8中,你可以为接口添加静态方法和默认方法.从技术角度来说,这是完全合法的,只是它看起来违反了接口作为一个抽象定义的理念.猜想设计初衷可能使为了兼容8以下的jdk Java8出来了个函数 ...
- 深度分析:java8的新特性lambda和stream流,看完你学会了吗?
1. lambda表达式 1.1 什么是lambda 以java为例,可以对一个java变量赋一个值,比如int a = 1,而对于一个方法,一块代码也是赋予给一个变量的,对于这块代码,或者说被赋给变 ...
随机推荐
- Ubuntu 设置简单密码,复杂度太高
Ubuntu 中创建的用户密码复杂度很高,如果想设置1234 ,或者与账户名相同的密码时,SystemSetting 中是不可以设置的. 可以通过简单的命令来设置 其中 anyongfei 是账户名 ...
- k-近邻分类的Python实现
参见<机器学习实战> # -*- coding:cp936 -*- #=========================================================== ...
- zoj 3537 Cake 区间DP (好题)
题意:切一个凸边行,如果不是凸包直接输出.然后输出最小代价的切割费用,把凸包都切割成三角形. 先判断是否是凸包,然后用三角形优化. dp[i][j]=min(dp[i][j],dp[i][k]+dp[ ...
- uvalive 3218 Find the Border
题意:一条封闭折线将平面分成了若干个区域,按顺序给出折线各点的坐标,要求输出封闭折线的轮廓. 题解:用类似卷包裹的算法,先确定一个一定会被选中的点(x坐标最小,y坐标最小)作为起点,然后把可能是下一个 ...
- Mac安装wget的两种方法
第一种.传统的安装包 A - 从ftp://ftp.gnu.org/gnu/wget/下载到最新的wget安装包到本地 B - 然后通过终端tar -zxvf命令解压到我们某个目录 C - 然后依 ...
- void类型及void指针
1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2 ...
- box-flex 分割
<!DOCTYPE html> <html> <head> <style> .box{ width: 300px; height: 100px; bac ...
- python os.path模块--转载
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...
- web pack的使用事项
一开始把webpack想的很难,很复杂,哈哈. 其实写的好的东西真的是越简单,越简单的东西其实越难写. 按照How to一步一步基本就能理解,webpack怎么使用了, 后面就是如何帮程序一步一步找到 ...
- ASP.NET线程与异步
什么是线程? 线程简单来说就是一种数据结构,用来管理这个程序的执行状态,其中包括 1.线程核心对象->寄存器的状态 2.线程环境块,是一块用户模式下的内存,包含线程的异常处理链的头部.线程的局部 ...