java8新特性整理
2017-04-14 22:40
225 查看
Java 8 新特性
1.允许在接口中有默认方法实现
使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法。
interface Formula
{
double calculate ( int a );
default double sqrt ( int a )
{
return Math.sqrt ( a );
}
}
2.Lambda表达式
http://www.cnblogs.com/WJ5888/p/4618465.html 方法中可以接受以函数为单元的参数。
(参数1,参数2)-> 函数();
(String v1, String v2) -> Integer.compare(v1.length(), v2.length()));
3.函数式接口
一个接口,这个接口具有唯一的一个抽像方法,称为函数式接口。
Comparator<String> comp = (v1,v2) -> Integer.compare(v1.length(), v2.length());
Lambda表达式被赋值给了comp函数接口变量
4.方法引用
需要执行的代码在某些类中已经存在,这时我们没必要再去写Lambda表达式,可以直接使用该方法,
System.out::println == x -> System.out.println(x)
构造方法的引用;Class::new
5.Streams流操作
Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。
Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。
而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。Stream 的并行操作依赖于 Java7 中引入的 Fork/Join 框架(JSR166y)来拆分任务和加速处理过程。 https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/
清单 4. 构造流的几种常见方法
// 1. Individual values
Stream stream = Stream.of("a", "b", "c");
// 2. Arrays
String [] strArray = new String[] {"a", "b", "c"};
stream = Stream.of(strArray);
stream = Arrays.stream(strArray);
// 3. Collections
List<String> list = Arrays.asList(strArray);
stream = list.stream();
6.全球化功能
http://www.ibm.com/developerworks/cn/java/j-lo-jdk8newfeature/index.html
Java 8 版本还完善了全球化功能:支持新的 Unicode 6.2.0 标准,新增了日历和本地化的 API,改进了日期时间的管理等。
Java 的日期与时间 API 问题由来已久,Java 8 之前的版本中关于时间、日期及其他时间日期格式化类由于线程安全、重量级、序列化成本高等问题而饱受批评。Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API。新的 java.time 中包含了所有关于时钟(Clock),本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的
Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了了日期时间和本地化的管理。
1.允许在接口中有默认方法实现
使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法。
interface Formula
{
double calculate ( int a );
default double sqrt ( int a )
{
return Math.sqrt ( a );
}
}
2.Lambda表达式
http://www.cnblogs.com/WJ5888/p/4618465.html 方法中可以接受以函数为单元的参数。
(参数1,参数2)-> 函数();
(String v1, String v2) -> Integer.compare(v1.length(), v2.length()));
3.函数式接口
一个接口,这个接口具有唯一的一个抽像方法,称为函数式接口。
Comparator<String> comp = (v1,v2) -> Integer.compare(v1.length(), v2.length());
Lambda表达式被赋值给了comp函数接口变量
4.方法引用
需要执行的代码在某些类中已经存在,这时我们没必要再去写Lambda表达式,可以直接使用该方法,
System.out::println == x -> System.out.println(x)
构造方法的引用;Class::new
5.Streams流操作
Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。
Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。
而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。Stream 的并行操作依赖于 Java7 中引入的 Fork/Join 框架(JSR166y)来拆分任务和加速处理过程。 https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/
清单 4. 构造流的几种常见方法
// 1. Individual values
Stream stream = Stream.of("a", "b", "c");
// 2. Arrays
String [] strArray = new String[] {"a", "b", "c"};
stream = Stream.of(strArray);
stream = Arrays.stream(strArray);
// 3. Collections
List<String> list = Arrays.asList(strArray);
stream = list.stream();
6.全球化功能
http://www.ibm.com/developerworks/cn/java/j-lo-jdk8newfeature/index.html
Java 8 版本还完善了全球化功能:支持新的 Unicode 6.2.0 标准,新增了日历和本地化的 API,改进了日期时间的管理等。
Java 的日期与时间 API 问题由来已久,Java 8 之前的版本中关于时间、日期及其他时间日期格式化类由于线程安全、重量级、序列化成本高等问题而饱受批评。Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API。新的 java.time 中包含了所有关于时钟(Clock),本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的
Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了了日期时间和本地化的管理。
相关文章推荐
- java新特性的一些整理
- Java - 特性 - 泛型 - 整理
- Java8新特性之精简的JRE详解_动力节点Java学院整理
- Java三大特性(继承、封装、多态)整理
- java8新特性整理
- java基础整理5--面向对象的高级特性
- Java8新特性整理之流的介绍与使用(三)
- Java8新特性之lambda的作用_动力节点Java学院整理
- JAVA高级工程师课程笔记整理——(四)高级特性
- Java8新特性整理之Lambda表达式(一)
- java8 新特性总结(-)转载整理
- JAVA学习笔记整理七(JDK5新特性)
- Java 8 新特性 – 终极手册整理
- Java8新特性之Base64详解_动力节点Java学院整理
- 整理一下java5的新特性(引用了很多,都有原文链接)
- Java JDK1.5、1.6、1.7新特性整理
- Java 8 新特性 – 终极手册整理
- JAVA高级特性整理
- Java8新特性之再见Permgen_动力节点Java学院整理
- Java8新特性整理之方法引用(二)