1. 允许switch语句中使用String表达式
Java7之前,switch的条件表达式类型只能是枚举类型,或者byte、char、short、int类型已或者Byte、Character、Short和Integer。
Java7之后允许条件表达语句是String类型了。
2. 允许数值以下划线分割
Java7之后下面的代码是合法的:
long a = 10_000_000L;
int b = 0b1100_1000_0011_0000;
大大增加了代码的可读性。
3. 允许数值以二进制表示
Java7之前数值只支持十进制(默认)、八进制(前缀为“0”)和十六进制(前缀为“0x”或“0X”)。
Java7之后允许使用前缀为“0b”或者“0B”表示二进制。
//十进制转换为二进制
System.out.println(Integer.toBinaryString(10));
4. 异常处理增强
Java7之前的多异常处理:
try {
FileInputStream fs = new FileInputStream("");
OutputStream os = new FileOutputStream("");
int b = 0 / 0;
int a = Integer.parseInt( "a", b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
}
Java7之后的多异常处理:
try {
FileInputStream fs = new FileInputStream("");
OutputStream os = new FileOutputStream("");
int b = 0 / 0;
int a = Integer.parseInt( "a", b);
} catch (FileNotFoundException | NumberFormatException e) {
e.printStackTrace();
}
5. try-with-resources
Java7之前的资源管理:
FileInputStream fs = null;
OutputStream os = null;
try {
fs = new FileInputStream("");
os = new FileOutputStream("");
} catch (FileNotFoundException | NumberFormatException e) {
e.printStackTrace();
} finally {
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Java7之后的资源管理:
try (FileInputStream fs = new FileInputStream("");
FileOutputStream os = new FileOutputStream("")) {
fs.read();
os.write("".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
try-with-resources这种声明方式指定了一个或多个资源,而且这些资源需要在程序结束的时候进行关闭。这种方式可以确保每个指定的资源都可以在声明结束的时候进行关闭(就是在try(){}结束的时候)。但是前提是这些资源必须实现接口java.lang.AutoCloseable(其中包括实现了java.io.Closeable接口的所有对象),原因是java.io.Closeable接口继承了java.lang.AutoCloseable接口。
在Java se 7中的try-with-resource机制中异常的抛出顺序与Java se 7以前的版本有一点不一样,是先声明的资源后关闭。
6. 简化泛型定义、简化变长参数的方法调用等
看下面的实例代码相信大家很快就认识了。
Map<String, Set<Long>> mapJava6 = new HashMap<String, Set<Long>>();
Map<String, Set<Long>> mapJava7 = new HashMap<>();