JDK5

  • 自动装箱与拆箱:
  • 枚举
  • 静态导入,如:import staticjava.lang.System.out
  • 可变参数(Varargs)
  • 内省(Introspector)

主要用于操作JavaBean中的属性,通过getXxx/setXxx。一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。

  • 泛型(Generic)(包括通配类型/边界类型等)
  • For-Each循环
  • 注解
  • 协变返回类型:实际返回类型可以是要求的返回类型的一个子类型

JDK6

  • AWT新增加了两个类:

Desktop和SystemTray,其中前者用来通过系统默认程序来执行一个操作,如使用默认浏览器浏览指定的URL,用默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档等。后者可以用来在系统托盘区创建一个托盘程序。(开发中基本没用过)

  • 使用JAXB2来实现对象与XML之间的映射,可以将一个Java对象转变成为XML格式,反之亦然
  • StAX,一种利用拉模式解析(pull-parsing)XML文档的API。类似于SAX,也基于事件驱动模型。之所以将StAX加入到JAXP家族,是因为JDK6中的JAXB2和JAX-WS 2.0中都会用StAX。
  • 使用Compiler API,动态编译Java源文件,如JSP编译引擎就是动态的,所以修改后无需重启服务器。(刚知道是从这里开始可以动态编译的)
  • 轻量级Http Server API,据此可以构建自己的嵌入式HttpServer,它支持Http和Https协议。
  • 插入式注解处理API(PluggableAnnotation Processing API)
  • 提供了Console类用以开发控制台程序,位于java.io包中。据此可方便与Windows下的cmd或Linux下的Terminal等交互。
  • 对脚本语言的支持如: ruby,groovy, javascript
  • Common Annotations,原是J2EE 5.0规范的一部分,现在把它的一部分放到了J2SE 6.0中
  • 嵌入式数据库 Derby(这个也是刚知道,基本没用过)

JDK7

  • 对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”];//取
  • 在Switch中可用String

  • 数值可加下划线用作分隔符(编译时自动被忽略)

  • 支持二进制数字,如:int binary= 0b1001_1001;

  • 简化了可变参数方法的调用

  • 调用泛型类的构造方法时,可以省去泛型参数,编译器会自动判断。

  • Boolean类型反转,空指针安全,参与位运算

  • char类型的equals方法: booleanCharacter.equalsIgnoreCase(char ch1, char ch2)

  • 安全的加减乘除: Math.safeToInt(longv); Math.safeNegate(int v); Math.safeSubtract(long v1, int v2);Math.safeMultiply(int v1, int v2)……

  • Map集合支持并发请求,注HashTable是线程安全的,Map是非线程安全的。但此处更新使得其也支持并发。另外,Map对象可这样定义:Map map = {name:”xxx”,age:18};

JDK8

  • 接口的默认方法:

即接口中可以声明一个非抽象的方法做为默认的实现,但只能声明一个,且在方法的返回类型前要加上“default”关键字。

  • Lambda 表达式:是对匿名比较器的简化,如:

      Collections.sort(names,(String a, String b) -> {return b.compareTo(a);});

对于函数体只有一行代码的,你可以去掉大括号{}以及return关键字。如:

	Collections.sort(names,(String a, String b) -> b.compareTo(a));

或:

	Collections.sort(names, (a, b) -> b.compareTo(a));
  • 函数式接口:是指仅仅只包含一个抽象方法的接口,要加@FunctionalInterface注解
  • 使用 :: 关键字来传递方法或者构造函数引用
  • 多重注解
  • 还增加了很多与函数式接口类似的接口以及与Map相关的API等……

最新文章

  1. 当Eclipse报版本低时的处理方法
  2. python os.path模块
  3. Linux IPC System V 消息队列
  4. SqlServer索引及优化详解
  5. Bat 循環執行範例
  6. [codility]CountDiv
  7. C#中标准Dispose模式的实现
  8. express+jade+bootstrap+mongdb simple CRUD test
  9. 《UNIX级别编程环境》注意读出信号(2)
  10. hibernate主键generator属性介绍
  11. 高性能MySQL第2,3章性能相关 回顾笔记
  12. 0.0 ABP官方文档翻译目录
  13. Unicode 与 utf8 utf16 utf32的关系
  14. SQLServer创建用户登录
  15. web 12
  16. R语言与机器学习学习笔记
  17. spring boot所有配置
  18. Java数组逆序存储
  19. Vika and Segments - CF610D
  20. SpringMVC简单的文件上传

热门文章

  1. BUUCTF | CODE REVIEW 1 (反序列化,md5绕过)
  2. 全国5A级旅游景区已达250家
  3. 106、TensorFlow变量 (二) reshape
  4. nginx的配置系统
  5. win10 命令重置 管理员密码
  6. SQL语句优化方式--进阶篇
  7. lvm 磁盘扩容
  8. Guava 开源工具的简单介绍
  9. c#各类DI容器
  10. 在Linux上搭建私有git仓库