jdk特性学习笔记

JDK5新特性

自动装箱与拆箱 -

枚举

静态导入 -,为了减少字符的输入量

可变参数(Varargs)

内省(introspector)-,操作bean

泛型(Generic)

For-Each循环

JDK6新特性

Desktop类和SystemTray类

使用JAXB2来实现对象与XML之间的映射

理解STAX

使用Compiler API

轻量级 Http Server API

插入式注解处理 API

使用Console开发控制台程序

对脚本语言的支持

Common Annotations

Java GUI界面的显示

嵌入式数据库Derby

Web服务元数据

Jtable的排序和过滤

更简单更强大的JAX-WS

JDK7新特性

switch中可以使用字符串了

泛型实例化类型自动推断

自定义自动关闭类

新增一些读取环境信息的工具方法

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

两个char之间的equals

安全的加减乘除|sd

对Java集合( Collections)的增强支持

数值可加下划线

支持二进制数字

在try/catch异常扑捉中,一个catch可以写多个异常类型用|隔开

可以不必要写finally语句来关闭资源,只要你在try()的括号内部定义要使用的资源

JDK8新特性

接口的默认方法

Lambda表达式

函数式接口

方法与构造函数引用

扩展了集合类

新的Date API

Annotation多重注解

streams(流)

parallel streams(并行流)

Map数据结构改进

JDK9新特性

Jigsaw模块化项目

简化进程API

轻量级JSON API

钱和货币的API

改善锁竞争机制

代码分段缓存

智能java编译

http2.0客户端

kulla计划

JDK10新特性

局部变量的类型推断

GC改进和内存管理

线程本地握手

备用内存设备上的堆分配

其他Unicode语言 - 标记扩展

基于Java的实验性JIT编译器

开源根证书

根证书颁发认证(CA)

将JDK生态整合单个存储库

删除工具javah

面试题

内省机制和反射机制什么区别

内省操作只针对JavaBean,只有符合JavaBean规则的类的成员才可以采用内省API进行操作。。。。而反射则不同,一个类的所有成员都可以进行反射操作。

内省是Java语言对Bean类属性、事件的一种缺省处理方法。

内省和反射的操作也有很大不同,内省是先得到属性描述器PropertyDecriptor后再进行各种操作,反射则是先得到类的字节码Class后再进行各种操作的。

反射就是让你可以通过名称来得到对象(类,属性,方法)的技术。例如我们可以通过类名来生成一个类的实例;知道了方法名,就可以调用这个方法;知道了属性名就可以访问这个属性的值。

自动装箱与拆箱

举例

Integer i = 10; //装箱

int n = i; //拆箱

本质

基本数据类型与包装器类型之间的转换

目的

简化开发

应用

参数有可能是基本数据类型,有可能是Object包装类型的情形下

源码解析

调用Integer的valueOf(int)方法和intValue()方法

面试Integer

对象比较问题:在[-128,127]之间存在Integer对象的缓存,Double不存在缓存。Boolean一定相同,有静态常量。

注意,Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现是类似的。 Double、Float的valueOf方法的实现是类似的。

如果其中有一个操作数是表达式(即包含算术运算)则比较的是数值(即会触发自动拆箱的过程)

Integer i = new Integer(xxx)和Integer i =xxx;这两种方式的区别

  1. 第一种方式不会触发自动装箱的过程;而第二种方式会触发;

  2. 在执行效率和资源占用上的区别。第二种方式的执行效率和资源占用在一般性情况下要优于第一种情况(注意这并不是绝对的)。

开发注意的问题

注意包装类型为null的情况

可变参数

目的

适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。

本质

数组

特点

  • 只能出现在参数列表的最后
  • 只能有一个
  • 重载时,优先匹配固定参数

注意事项

  • int[] 无法转型为 Object[]
  • 尽量不要重写,父子类无法转型
  • null重载无法确定匹配的方法

for each

目的

简化开发

本质

迭代器模式和普通for循环

缺点

  • 无法使用索引
  • 迭代时无法改变集合
Author: bkdwei