概述
jdk5:
1.自动拆、装箱
int -->Integer
double --> Double
long --> Long
char --> Character
float --> Float
boolean --> Boolean
short --> Short
byte -- > Byte
2.枚举
public enum MyEnum{
RED,GREEN,YELLOW
}
3.for-each遍历
只有实现了iterator接口的集合类。
4.泛型
意味着编写的代码可以被不同类型的对象所重用。 可见泛型的提出是为了编写重用性更好的代码。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
5.静态导入
可以将类中的一些变量、方法以import static的方式将其导入,使被导入类的静态变量和方法于当前类可见,使用无需再给出全类名。
6.变长参数
public void printColor(String... colors){
// do something
}
7.线程并发库
JUC并发包 java.util.concurrent
线程互斥工具类:Lock,ReadWriteLock
线程通信:Condition
线程池:ExecutorService
同步队列:ArrayBlockingQueue
同步集合:ConcurrentHashMap,CopyOnWriteArrayList
线程同步工具:Semaphore
JDK6:
1.CompilerApi
2.Consile
java.io.Console
3.Desktop类和SystemTray类
4.轻量级Http Server API
5.对脚本语言的支持
如ruby,groovy,javascript。
JDK7:
1.捕获多异常
public static void first(){
try {
BufferedReader reader = new BufferedReader(new FileReader(""));
Connection con = null;
Statement stmt = con.createStatement();
} catch (IOException | SQLException e) {
//捕获多个异常,e就是final类型的
e.printStackTrace();
}
}
2.数字变量对下划线的支持
int num = 1234_5678_9;
float num2 = 222_33F;
long num3 = 123_000_111L;
3.switch对String的支持
String status = "orderState";
switch (status) {
case "ordercancel":
System.out.println("订单取消");
break;
case "orderSuccess":
System.out.println("预订成功");
break;
default:
System.out.println("状态未知");
}
4.try-with-resource
是一个定义了一个或多个资源的 try 声明,这个资源是指程序处理完它之后需要关闭它的对象。确保每一个资源在处理完成后都会被关闭。
public static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
5.创建泛型时类型推断
List<String> list = new ArrayList<String>();
可变为
List<String> list = new ArrayList<>();
JDK8:
1.Base64
对 Base64 编码的支持已经被加入到Java 8官方库中,这样不需要使用第三方库就可以进行Base64编码
2.新的日期时间api
Date-Time API(JSR 310);
3.lambda表达式(闭包)
最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成。
public class Lambda {
public static void main(String[] args) {
Arrays.asList("a", "b", "d").forEach(System.out::println);
}
}
4.函数式接口
新的注解FunctionalInterface用来标注这是一个函数式接口。会使编译器在编译器检测接口是否只有一个抽象方法配合lambda表达式使用。
5.Optional
最常见的bug就是空值异常,在Java 8之前,Google Guava引入了 Optionals 类来解决 NullPointerException;
如果Optional实例持有一个非空值,则 isPresent() 方法返回true,否则返回false;orElseGet() 方法,Optional实例持有null, 则可以接受一个lambda表达式生成的默认值;map()方法可以将现有的 Optional 实例的值转换成新的值;orElse()方法与orElseGet()方法类似, 但是在持有null的时候返回传入的默认值。
6.Streams
新增的Stream API(java.util.stream)将生成环境的函数式编程引入了Java库中。
final Collection<Task> tasks = Arrays.asList(
new Task(Status.OPEN, 5),
new Task(Status.OPEN, 13),
new Task(Status.CLOSED, 8)
);
// Calculate total points of all active tasks using sum()
final long totalPointsOfOpenTasks = tasks
.stream()
.filter(task -> task.getStatus() == Status.OPEN)
.mapToInt(Task::getPoints)
.sum();
System.out.println("Total points: " + totalPointsOfOpenTasks);
7.更好的类型推断
Value.defaultValue()
8.并行数组
Arrays.parallelSort可以在多核情况下显著提高对数组排序的效率。
9.Nashron引擎
提供了nashron引擎可以在Java代码中直接编写js代码执行。
10.接口的默认方法和静态方法
给java.util.Collection接口添加新方法,如stream()、parallelStream()、forEach()和removeIf()等等。
最后
以上就是义气绿草为你收集整理的JDK各个版本的新特性:的全部内容,希望文章能够帮你解决JDK各个版本的新特性:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复