Java JDK 各个版本的区别
Jdk 1.5的新特性(猛虎)
1, 静态导入
import 语句可以导入一个类或是某个包中所有的类。Import static 语句可以导入一个类中的某个静态方法或者所有的静态方法。
2, 自动装箱与拆箱
基本类型自动被封装到与它相同类型的对象中,于此同时,自动拆箱就是被装箱中的对象自动的被提取出来。
3, 枚举
把集合中的对象元素一个个提取出来,使代码更具有可读性,易于维护,它是个强类型,可以保证系统安全性。
4, 可变参数
可变参数的简单语法格式 method([argumentList], data … argumentName);
5, 内省(Intropector)
是java语言对Bean类属性,事件的一种缺省处理方法,之前的对一个属性的可以get和set方法来获得或者设置其值,但是有了内省可以通过它来获得某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个描述器就可以获得这个属性对应的set和get方法,最后我们可以通过反射机制来调用这些方法;
6, 泛型
就是可以允许指定集合里的元素类型。
7, For-Each循环
JDK 1.6的新特性
1, Desktop 类和System Tray 类
Desktop可以打开系统默认的浏览器指定的URL,打开系统默认的邮件客户端给指定的邮箱发送邮件,用默认的应用程序打开或者编辑文件。后者可以用来在系统托盘区创建一个托盘程序。
2, 使用JAXB2(java Architecture for XML Binding)
它可以将一个Java对象转变成为XML格式,反之亦然。
3, 理解StAX
StAX是除了DOM和SAX之外的又一种处理XML的API。
4, 使用Compiler API
我们可以使用Compiler API动态的编译Java源文件,它可以结合反射功能可以实现动态的产生Java代码并编译执行这些代码。
5, 轻量级的HttpServer API
1.6提供了一个简单的HttpServer API,据此我们可以构建自己的嵌入式HttpServer,它支持http和https协议。
6, 用Console开发控制台程序
1.6中提供了Java.io.Console类专门用来访问基于字符的控制台设备。如果你的程序要在windows下的cmd或者linux下的Terminal交互,就可以用Console类代劳。
7, 对脚本语言的支持如,ruby, javascript.
JDK 1.7的新特性
1, switch 中可以使用字符串
2, ‘<>’这个玩意儿运用,List list = new ArrayList<>();泛型实例化类型自动推断。
3, 自定义自动关闭类
接口中声明一个关闭的方法,只要实现该接口,在该类对象销毁时会自动的调用close()方法,就可以关闭你想要关闭 的资源。
4, 新增一些取环境信息的工具方法
File.System.getJavaIoTempDir();//IO临时文件夹
File.System.getJavaHomeDir();//JRE的安装目录
File.System.getUserHomeDir();//当前用户目录
File.System.getUserDir();//启动java进程时所在的目录
5, Boolean类型反转,空指针安全,参与位运算
True->False, Flase->True,Null->Null
6, 两个char间的equals
Boolean Character.equalsIngnore(char ch1,char ch2)
7, 安全的加减乘除
8, 支持二进制文件
int binary = 0b1001_1001;
JDK 1.8的新特性
1, 接口的默认方法
1.8允许我们给接口中添加一个非抽象的方法,用default关键字即可。
2, Lambda表达式
List names = Arrays.asList(“peter”, “anna”, “mike”, “xenia”);
Collections.sort(names, new Comparator() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
Lambda表达式:
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
3, 函数式接口
Lambda 表达式是如何在java的类型系统中表示的呢?每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的 接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为 默认方法 不算抽象方法,所以你也可以给你的函数式接口添加默认方法。
我们可以在接口中添加@FunctionALInterface进行注解。
4, 方法与构造函数的引用
1.8可以使用关键字::来传递方法或者构造函数引用,下面的代码展示了如何引用一个静态方法
Converter