1、TWR 自动关闭资源
自动关闭资源必须要注意书写规范,所有需要关闭的资源必须使用一个变量声明出来并且写在try的小括号块中,不是大括号。如下代码:
try( InputStream is = new FileInputStream(new File(path)) ){
// 可能发生异常的代码
}catch(Exception e){
// 异常信息捕获
}finally{
// 自动关闭资源,无需手动处理 is
}
2、switch 新增字符串支持
在java7之前switch只是支持 byte short char int 枚举以及 Byte Short Char Integer,现在新增支持字符串,其实Javascript一直都支持字符串。
3、语法糖
(指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会)
对数字常量的改进,新增二进制写法、数字可以使用下划线,编译时自动去掉下划线;比如如下代码:
int value = 123_456_789;// 增加代码的可读性
int value = 0b1100111;// 二进制表示数字
4、Multi-catch 在一个catch块中声明多个要捕获的异常
try{
// 可能发生异常的代码
}catch(IOException | FileNotFoundException e){
// 异常信息捕获
}catch(Exception e){
// 异常信息捕获
}finally{
// 自动关闭资源,无需手动处理 is
}
5、final异常
为了避免异常抛出时类型受到限制,所以JDK7推出了final异常,如下代码:
try{
// 可能发生异常的代码
}catch(IOException | FileNotFoundException e){
// 异常信息捕获
}catch(final Exception e){
// 异常信息捕获
throw e; // 这里虽然抛出的是顶层接口,但是如果使用final标记之后,就是对应真正的异常类型了
}finally{
// 自动关闭资源,无需手动处理 is
}
6、钻石语法,也就是在泛型简化了泛型的初始化语法
Map<String,String> map = new HashMap<>();
7、简化变参方法调用
可变参数的使用,以及泛型自动告警,这些都稍有改动。
@SafeVarargs
public static <T> T useVarargs(T... args) {
return args.length > 0 ? args[0] : null;
}
VarargsWarning.useVarargs(new ArrayList<String>());
注意:不仅仅是需要了解新增的语法,而是要去深入的认识实现这些新特性的原因和方式!