(1)变量中数字使用下划线
如果你在Java源码中要处理大数字,你可以在数字中加入下划线来提高可读性。
1.下划线只能在数字之间,在数字的开始或结束一定不能使用下划线。
2.在浮点型小数点前和小数点后不可使用下划线。
3.在F或者L下标的前面不可使用下划线。
无效的下划线写法
float pi1 = 3_.1415F; // 无效的; 不能在小数点之前有下划线
float pi2 = 3._1415F; //无效的; 不能在小数点之后有下划线
long socialSecurityNumber1 = 999_99_9999_L; //无效的,不能在L下标之前加下划线
int a3 = 52_; // 无效的,不能以下划线结尾
(2)switch中支持使用String
private static void switchString(String str){
switch(str){
case "one":
System.err.println("1");
break;
case "two":
System.out.println("2");
break;
default :
System.out.println("err");
}
}
(3)泛型实例化类型自动推断
以后你创建一个泛型实例,不需要再详细说明类型,只需用<>,编译器会自动帮你匹配
//例如
Map<Integer,String> map = new HashMap<Integer,String>();
//可以简化为
Map<Integer,String> map = new HashMap<>();
(4)一个catch可以捕获多个异常
1.捕获多种异常
过去我们在捕获多个异常类型时,往往会使用以下类型的代码:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
现在借助于新增的功能,开发者可以使用以下代码:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
try{
File file = null;
file.exists();
new FileInputStream("");
}catch(IOException | NullPointerException e){
if(e instanceof IOException){
System.out.println("IOException ... " + e);
}else if(e instanceof NullPointerException){
System.out.println("NullPointerException ... " + e);
}else{
e.printStackTrace();
}
}
(5)try-with-resources 声明
try-with-resources 是一个定义了一个或多个资源的try 声明,这个资源是指程序处理完它之后需要关闭它的对象。try-with-resources 确保每一个资源在处理完成后都会被关闭。 可以使用try-with-resources的资源有: 任何实现了java.lang.AutoCloseable 接口和java.io.Closeable 接口的对象。
public static void main(String args[]){
try{
System.out.println(readFile("D:\1.txt"));
}catch(Exception e){
System.out.println(e);
}
}
public static String readFile(String path) throws Exception{
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
注意:
JDK1.7之前我们必须在finally块中手动关闭资源,否则会导致资源的泄露。
JDK1.7之后就可以使用try-with-resources,不需要我们在finally块中手动关闭资源。
只要资源类实现了AutoCloseable或Closeable接口,程序在执行完try块后会自动close所使用的资源。JVM关闭资源顺序是逆序的。