Java 7新特性 - (1)Java语法特性

分享到:

文章目录


二进制数字表达方式

在Java 7之前,支持十进制(123)、八进制(0123)、十六进制(0X12AB)的表示形式。Java 7中增加支持二进制的表示(0B11110001、0b11110001)

1int binary = 0b0001_1001;
2System.out.println("binary is :" + binary);

输出

1binary is :25

使用下划线对数字进行分隔表达

Java 7中支持在数字中间增加'_'作为分隔符,分隔长int以及long(也支持double,float),显示更直观,如(12_123_456)。

下划线只能在数字中间,编译时编译器自动删除数字中的下划线。

1int intOne = 1_000_000;
2long longOne = 1_000_000;
3double doubleOne = 1_000_000;
4float floatOne = 1_000_000;

switch 语句支持字符串变量

之前在switch中只能使用number或enum,Java 7开始支持string。

 1String s = "a";
 2switch (s) {
 3    case "a":
 4        System.out.println("is a");
 5        break;
 6    case "b":
 7        System.out.println("is b");
 8        break;
 9    default:
10        System.out.println("is c");
11        break;
12}

泛型实例创建的类型推断

运用泛型实例化类型自动推断,对通用实例创建(diamond)的type引用进行了改进,语法更加简洁

1// Java 7 之前的写法
2List<String> list = new ArrayList<String>();
3
4// Java 7 开始支持的写法
5List<String> list = new ArrayList<>();

try-with-resources 语句

Java 7之前对某些资源的操作是需要手动关闭,如InputStream,Writes,Sockets,Sql等,这些需要在finally语句中进行关闭资源的操作。

1OutputStream fos = null;
2try {
3    fos = new FileOutputStream("/tmp/file");
4} finally {
5    fos.close();
6}

从Java 7开始, 在采用try-with-resources方式后,它会自动释放资源, 不需要再次声明流的关闭。可以使用try-with-resources的资源有: 任何实现了java.lang.AutoCloseable接口或者java.io.Closeable接口的对象。这里Closeable继承了AutoCloseable。

1public interface Closeable extends AutoCloseable

从Java 7开始可以把上面例子中的代码改写成下面的形式

1try(OutputStream fos = new FileOutputStream("/tmp/file");) {
2    // 不需要再次指明fos.close();
3}

同时捕获多个异常处理

Java 7以前在一个方法抛出多个异常时,只能一个个的catch

1try {
2    result = field.get(obj);
3} catch (IllegalArgumentException e) {
4    e.printStackTrace();
5} catch (IllegalAccessException e) {
6    e.printStackTrace();
7}

Java 7开始支持一个catch语句中包含多个异常类型,用"|"隔开。

1try {
2    result = field.get(obj);
3} catch (IllegalArgumentException | IllegalAccessException e) {
4    e.printStackTrace();
5}

参考: