JDK1.5 新特性:
1. 自动装箱与拆箱:
2. 枚举
3. 静态导入, 如: import staticjava.lang.System.out
4. 可变参数(Varargs)
5. 内省(Introspector), 主要用于操作 JavaBean 中的属性, 通过 getXxx/setXxx. 一般的做法是通过类 Introspector 来获取某个对象的 BeanInfo 信息, 然后通过 BeanInfo 来获取属性的描述器(PropertyDescriptor), 通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法, 然后我们就可以通过反射机制来调用这些方法.
6. 泛型(Generic)(包括通配类型 / 边界类型等)
7.For-Each 循环
8. 注解
9. 协变返回类型: 实际返回类型可以是要求的返回类型的一个子类型
JDK1.6 新特性:
1. AWT 新增加了两个类: Desktop 和 SystemTray, 其中前者用来通过系统默认程序来执行一个操作, 如使用默认浏览器浏览指定的 URL, 用默认邮件客户端给指定的邮箱发邮件, 用默认应用程序打开或编辑文件(比如, 用记事本打开以 txt 为后缀名的文件), 用系统默认的打印机打印文档等. 后者可以用来在系统托盘区创建一个托盘程序
2. 使用 JAXB2 来实现对象与 XML 之间的映射, 可以将一个 Java 对象转变成为 XML 格式, 反之亦然
3. StAX, 一种利用拉模式解析(pull-parsing)XML 文档的 API. 类似于 SAX, 也基于事件驱动模型. 之所以将 StAX 加入到 JAXP 家族, 是因为 JDK6 中的 JAXB2 和 JAX-WS 2.0 中都会用 StAX.
4. 使用 Compiler API, 动态编译 Java 源文件, 如 JSP 编译引擎就是动态的, 所以修改后无需重启服务器.
5. 轻量级 Http Server API, 据此可以构建自己的嵌入式 HttpServer, 它支持 Http 和 Https 协议.
6. 插入式注解处理 API(PluggableAnnotation Processing API)
7. 提供了 Console 类用以开发控制台程序, 位于 java.io 包中. 据此可方便与 Windows 下的 cmd 或 Linux 下的 Terminal 等交互.
8. 对脚本语言的支持如: ruby,groovy, javascript
9.Common Annotations, 原是 J2EE 5.0 规范的一部分, 现在把它的一部分放到了 J2SE 6.0 中
10. 嵌入式数据库 Derby
JDK1.7 新特性
1. 对 Java 集合 (Collections) 的增强支持, 可直接采用 [],{} 的形式存入对象, 采用 [] 的形式按照索引, 键值来获取集合中的对象. 如:
- List<String>list=["item1","item2"];// 存
- Stringitem=list[0];// 直接取
- Set<String>set={"item1","item2","item3"};// 存
- Map<String,Integer> map={"key1":1,"key2":2};// 存
- Intvalue=map["key1"];// 取
2. 在 Switch 中可用 String
3. 数值可加下划线用作分隔符(编译时自动被忽略)
4. 支持二进制数字, 如: int binary= 0b1001_1001;
5. 简化了可变参数方法的调用
6. 调用泛型类的构造方法时, 可以省去泛型参数, 编译器会自动判断.
7.Boolean 类型反转, 空指针安全, 参与位运算
8.char 类型的 equals 方法: booleanCharacter.equalsIgnoreCase(char ch1, char ch2)
9. 安全的加减乘除: Math.safeToInt(longv); Math.safeNegate(int v); Math.safeSubtract(long v1, int v2);Math.safeMultiply(int v1, int v2)......
10 .Map 集合支持并发请求, 注 HashTable 是线程安全的, Map 是非线程安全的. 但此处更新使得其也支持并发. 另外, Map 对象可这样定义: Map map = {name:"xxx",age:18};
JDK1.8 新特性
1. 接口的默认方法: 即接口中可以声明一个非抽象的方法做为默认的实现, 但只能声明一个, 且在方法的返回类型前要加上 "default" 关键字.
2. Lambda 表达式: 是对匿名比较器的简化, 如:
- Collections.sort(names,(String a, String b) -> {
- returnb.compareTo(a);
- });
对于函数体只有一行代码的, 你可以去掉大括号 {} 以及 return 关键字. 如:
Collections.sort(names,(String a, String b) -> b.compareTo(a));
或: Collections.sort(names, (a, b) -> b.compareTo(a));
3. 函数式接口: 是指仅仅只包含一个抽象方法的接口, 要加 @FunctionalInterface 注解
4. 使用 :: 关键字来传递方法或者构造函数引用
5. 多重注解
6. 还增加了很多与函数式接口类似的接口以及与 Map 相关的 API 等......
来源: http://www.bubuko.com/infodetail-2680168.html