您的位置:首页 > 编程语言 > Java开发

Java8的新特性

2015-11-27 22:48 316 查看
Java 8主要新特性包括如下几点:
一、接口的默认方法和静态方法
Java 8版之前,接口只有抽象方法,而在Java 8,为接口新增了两种类型的方法。

第一种是默认方法:在Java 8中,可以通过使用default关键字来添加默认的方法实现。 接口的实现类可以直接使用这些默认的方法,同时还可以重写默认的方法,这不是强制性的重写。

package demo.ch;

public interface Java8InterfaceDemo {
abstract void add();
default void display(){
System.out.println("default method of interface");
}
}

Java 8接口引入的第二种方法是静态方法。 这一点与类中的静态方法相似,可以在接口中使用static关键字定义静态方法。如果我们要调用接口定义的静态方法,只需使用接口名就可以访问这些静态方法。比如:

package demo.ch;

public interface Java8InterfaceDemo {
abstract void add();
default void display(){
System.out.println("default method of interface");
}
public static void show(){
System.out.println("static method of interface");
}
}
二、Lambda表达式

Lambda表达式其实并不陌生,他的前生就是匿名函数
lambda表达式可以这样定义(不精确,自己的理解):一段带有输入参数的可执行语句块



Lambda语法详解:



从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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: