转眼真正工作的时间也一年多了,说实话虽然老板对我是肯定的,但是我对自己还是很不满意所以学习吧骚年们。
Java8新特性
Java8算是java语言的一个大版本还是很有必要学习的,包括函数式编程,新的JavaScript引擎,新的日期API,新的StreamAPI等等。
新特性
- Lambda表达式 -Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)
- 方法引用-方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
- 默认方法-默认方法就是在一个接口里面有一个实现了的方法
- 新的工具-新的编译工具如:Nashorn引擎,类依赖分析器jdeps。
- Stream API-新添加的Stream API (java.util.stream)把真正的函数式编程引入到java中
- DateTime API-加强对于日期和时间的管理
- Optional 类-Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
- Nashorn, JavaScript 引擎-Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。
编程风格
Java8希望有自己的编程风格 ,并与Java7区分开,以下实例展示了java7和8的区别。
package com.company.java8.overview;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Java8 {
public static void main(String[] args) {
List<String> webs1 = new ArrayList<>();
webs1.add("老张");
webs1.add("老梁");
webs1.add("老李");
webs1.add("老刘");
webs1.add("老王");
List<String> webs2 = new ArrayList<>();
webs2.add("老张");
webs2.add("老梁");
webs2.add("老李");
webs2.add("老刘");
webs2.add("老王");
Java8 java8 = new Java8();
System.out.println("java7语法");
java8.sortUsingJava7(webs1);
System.out.println(webs1);
System.out.println("java8语法");
java8.sortUsingJava8(webs2);
System.out.println(webs2);
}
//使用java7排序
private void sortUsingJava7(List<String> names){
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
}
private void sortUsingJava8(List<String> names){
Collections.sort(names,(o1, o2) -> o1.compareTo(o2));
}
}
运行结果如下图所示: