博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK 1.5-1.8特性
阅读量:4208 次
发布时间:2019-05-26

本文共 3785 字,大约阅读时间需要 12 分钟。

JDK各个版本的特性

1.JDK 1.5

  • 1) 自动装箱和拆箱
  • 2) 枚举
  • 3) 静态导入
  • 4 可变参数Varargs
    语法格式是:
methodName([argumentList], dataType...argumentName);
  • 5) 内省 Introspector
  • 6) 泛型 Generic
  • 7) For-Each循环

2.JDK 1.6

  • 1) Desktop和SystemTray类

前者可以用来打开系统默认浏览器浏览指定的URL

打开系统默认邮件客户端给指定的邮箱发邮件
用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件)
用系统默认的打印机打印文档;

后者可以用来在系统托盘区创建一个托盘程序

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

Java Architecture for XML Binding

使用注解实现

  • 3) stAX

除了DOM和SAX之外的又一种处理XML文档的API

一种利用拉模式解析(pull-parsing)XML文档的API
通过提供一种基于事件迭代器(Iterator)的API让 程序员去控制xml文档解析过程,程序遍历这个事件迭代器去处理每一个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产生一个解析事件 然后处理该事件,之后又促使解析器产生下一个解析事件,如此循环直到碰到文档结束符;

  • 4) 使用Compiler API

动态编译Java源文件 跨平台

手动修改JSP后 可以使用Compiler API动态编译

  • 5) 轻量级Http Server API

可以构建自己的嵌入式Http Server

它支持Http和Https协议,提供了HTTP1.1的部分实现

  • 6) 插入式注解处理API

把method, package, constructor, type, variable, enum, annotation等Java语言元素映射为Types和Elements

Java语言的语义映射成为对象
javax.lang.model包下面可以看到这些类
在编译时而不是运行时处理Annotation

  • 7) 用Console开发控制台程序

java.io.Console 类专用来访问基于字符的控制台设备

如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实 例.

  • 8) 对脚本语言的支持:ruby, groovy, javascript

  • 9) Common Annotations

  • 10) 支持最新的windows vista系统的Windows Aero视窗效果

3.JDK 1.7

  • 1) switch()可以使用字符串

  • 2) <> 菱形运算符可以自动推断出泛型的类型

  • 3) 自定义自动关闭类

    实现AutoCloseable接口并且实现close()方法

  • 4) 新增取环境信息的工具方法

    File System.getJavaIoTempDir() // IO临时文件夹

    File System.getJavaHomeDir() // JRE的安装目录
    File System.getUserHomeDir() // 当前用户目录
    File System.getUserDir() // 启动java进程时所在的目录

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

Boolean Booleans.negate(Boolean booleanObj)

  • 6) 两个char间的equals

boolean Character.equalsIgnoreCase(char ch1, char ch2)

  • 7) 安全的加减乘除

  • 8) 对集合的增强

采用[]、{}的形式存入对象

采用[]的形式按照索引、键值来获取集合中的对象

List
list=["item"]; //向List集合中添加元素String item=list[0]; //从List集合中获取元素
Set
set={
"item"}; //向Set集合对象中添加元素
Map
map={
"key":1}; //向Map集合中添加对象int value=map["key"]; //从Map集合中获取对象
  • 9) 在Switch中可用String 本质还是整型 但是使用的是字符串的hashcode

  • 10) 数值可加下划线

int one_million = 1_000_000;
  • 11) 支持二进制文字
int binary = 0b1001_1001;
  • 12) 简化了可变参数方法的调用

    当程序员试图使用一个不可具体化的可变参数并调用一个varargs (可变)方法时,编辑器会生成一个“非安全操作”的警告。

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

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

4. JDK 1.8

  • 1) 接口的默认方法
    允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法
interface Formula {    double calculate(int a);    default double sqrt(int a) {        return Math.sqrt(a);    }}
  • 2) Lambda 表达式

  • 3) 函数式接口 @FunctionalInterface

“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为 默认方法 不算抽象方法,所以你也可以给你的函数式接口添加默认方法。

  • 4) 方法与构造函数引用

允许你使用 :: 关键字来传递方法或者构造函数引用

Converter
converter = Integer::valueOf;Integer converted = converter.convert("123");System.out.println(converted); // 123converter = something::startsWith;String converted = converter.convert("Java");System.out.println(converted); // "J"
  • 6) Lambda 作用域

可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。

  • 7) 访问局部变量
final int num = 1;Converter
stringConverter = (from) -> String.valueOf(from + num);stringConverter.convert(2); // 3

num可以不用声明为final 但是必须不可被后面的代码改变

  • 8) 访问对象字段与静态变量

  • 9) 访问接口的默认方法

    lamada表达式无法访问到默认方法

  • 10) Date API

    java.time下包含了一组全新的时间日期API

    • 1.Instant类也可以用来创建老的java.util.Date对象。
    • 2.Timezones 时区
      在新API中时区使用ZoneId来表示.
      时区可以很方便的使用静态方法of来获取到.
      时区定义了到UTS时间的时间差,在Instant时间点对象到本地日期对象之间转换的时候是极其重要的。
    • 3.LocalDate 本地日期
  • 11) Annotation 注解

    支持多重注解
    例 1: 使用包装类当容器来存多个注解(老方法

@interface Hints {
Hint[] value();}@Repeatable(Hints.class)@interface Hint {
String value();}@Hints({@Hint("hint1"), @Hint("hint2")})class Person {
}

例 2:使用多重注解(新方法)

复制代码 代码如下:

@Hint("hint1")@Hint("hint2")class Person {}
Hint hint = Person.class.getAnnotation(Hint.class);System.out.println(hint);             Hints hints1 = Person.class.getAnnotation(Hints.class);System.out.println(hints1.value().length);  Hint[] hints2 = Person.class.getAnnotationsByType(Hint.class);System.out.println(hints2.length);

转载地址:http://dqqli.baihongyu.com/

你可能感兴趣的文章
管理任务执行-如何制定有效的机制
查看>>
管理沟通-沟通框架
查看>>
java8-计算时间差的方法
查看>>
lombok深入实践
查看>>
java8-新的日期API
查看>>
java8-Optional的引入
查看>>
java8-Optional的引入
查看>>
java8-Optional类
查看>>
java8-CompleableFuture的使用1
查看>>
软件文档写作-plantuml画用例图和时序图
查看>>
plantuml-绘制状态图和活动图和部署图
查看>>
ej3-0开端
查看>>
java并发编程-12个原子类
查看>>
0101-ioc
查看>>
0102-aop
查看>>
0103-springmvc的基本流程
查看>>
面试-PA和XSYX面试小结
查看>>
0104 gradle入门
查看>>
0105 springMVC开发基础
查看>>
0106 springMVC REST风格
查看>>