1.二进制数字表达方式
原本整数(以60为例)能够用十进制(60)、八进制(074)、
十六进制(0x3c)表示,唯独不能用二进制表示(111100),
Java 7 弥补了这点。
示例
int a = 0b111100;
log("二进制数 -> " + a);
// 输出
二进制数 -> 60
2.使用下划线对数字进行分隔表达
原本表示一个很长的数字时,会看的眼花缭乱(比如1234567),
Java 7 允许在数字间用下划线分隔(1_234_567),为了看起来更清晰。
示例
int b = 1_000_0000;
log("长数字 -> " + b);
// 输出
长数字 -> 10000000
3.switch支持字符串变量
原本 Switch 只支持:int、byte、char、short,现在也支持 String
示例
String str = "A";
switch (str) {
case "A":
log("A");
break;
case "B":
log("B");
break;
case "C":
log("C");
break;
case "D":
log("D");
break;
default:
log("default");
}
4.泛型的菱形语法
示例
// 旧的写法
Map<String, String> map = new HashMap<String, String>();
// 新的写法
Map<String, String> map1 = new HashMap<>();
5.自动关闭资源的try try-witch-resources
try中会打开的资源(这些资源必须实现Closeable或AutoCloseable)
声明在圆括号内
示例
// 旧的写法 通常在finally里面手动关闭流
FileInputStream fis = null;
try {
fis = new FileInputStream("1.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 新的写法 自动关闭流
try (FileInputStream fis1 = new FileInputStream("1.txt")) {
// TODO
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
6.多异常捕获
如果在try语句块中可能会抛出 IOException、
NumberFormatException异常,
因为他们是检验异常,因此必须捕捉或抛出。
示例
try (FileInputStream fis1 = new FileInputStream("1.txt")) {
// TODO
} catch (IOException | NumberFormatException e) {
e.printStackTrace();
}
7.增强性throws声明
原本如果在try中抛出 IOException,
以catch(Exception e)捕捉,且在catch语句块内再次抛出这个异常,
则需要在函数声明处:throws Exception,
而不能 throws IOException,因为Java编译器不知道变量e
所指向的真实对象,而Java7修正了这点。
示例
try (FileInputStream fis1 = new FileInputStream("1.txt")) {
} catch (Exception e) { // Exception e = new FileNotFoundException();
// TODO
throw e;
}