本文共 3785 字,大约阅读时间需要 12 分钟。
JDK各个版本的特性
1.JDK 1.5
methodName([argumentList], dataType...argumentName);
2.JDK 1.6
前者可以用来打开系统默认浏览器浏览指定的URL
打开系统默认邮件客户端给指定的邮箱发邮件 用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件) 用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序
Java Architecture for XML Binding
使用注解实现除了DOM和SAX之外的又一种处理XML文档的API
一种利用拉模式解析(pull-parsing)XML文档的API 通过提供一种基于事件迭代器(Iterator)的API让 程序员去控制xml文档解析过程,程序遍历这个事件迭代器去处理每一个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产生一个解析事件 然后处理该事件,之后又促使解析器产生下一个解析事件,如此循环直到碰到文档结束符;动态编译Java源文件 跨平台
手动修改JSP后 可以使用Compiler API动态编译可以构建自己的嵌入式Http Server
它支持Http和Https协议,提供了HTTP1.1的部分实现把method, package, constructor, type, variable, enum, annotation等Java语言元素映射为Types和Elements
Java语言的语义映射成为对象 javax.lang.model包下面可以看到这些类 在编译时而不是运行时处理Annotationjava.io.Console 类专用来访问基于字符的控制台设备
如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实 例.8) 对脚本语言的支持:ruby, groovy, javascript
9) Common Annotations
10) 支持最新的windows vista系统的Windows Aero视窗效果
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)
boolean Character.equalsIgnoreCase(char ch1, char ch2)
7) 安全的加减乘除
8) 对集合的增强
采用[]、{}的形式存入对象
采用[]的形式按照索引、键值来获取集合中的对象Listlist=["item"]; //向List集合中添加元素String item=list[0]; //从List集合中获取元素
Setset={ "item"}; //向Set集合对象中添加元素
Mapmap={ "key":1}; //向Map集合中添加对象int value=map["key"]; //从Map集合中获取对象
9) 在Switch中可用String 本质还是整型 但是使用的是字符串的hashcode
10) 数值可加下划线
int one_million = 1_000_000;
int binary = 0b1001_1001;
12) 简化了可变参数方法的调用
当程序员试图使用一个不可具体化的可变参数并调用一个varargs
(可变)方法时,编辑器会生成一个“非安全操作”的警告。13) 在try catch异常扑捉中,一个catch可以写多个异常类型,用”|”隔开
14) 可以不必要写finally语句来关闭资源,只要你在try()的括号内部定义要使用的资源
interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); }}
2) Lambda 表达式
3) 函数式接口 @FunctionalInterface
“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为 默认方法 不算抽象方法,所以你也可以给你的函数式接口添加默认方法。
允许你使用 :: 关键字来传递方法或者构造函数引用
Converterconverter = Integer::valueOf;Integer converted = converter.convert("123");System.out.println(converted); // 123converter = something::startsWith;String converted = converter.convert("Java");System.out.println(converted); // "J"
可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
final int num = 1;ConverterstringConverter = (from) -> String.valueOf(from + num);stringConverter.convert(2); // 3
num可以不用声明为final 但是必须不可被后面的代码改变
8) 访问对象字段与静态变量
9) 访问接口的默认方法
lamada表达式无法访问到默认方法10) Date API
java.time下包含了一组全新的时间日期API11) 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/