Java重温学习笔记,Java7新特性

1. switch中添加对String类型的支持(Strings in switch Statements)

Java7之前,代码中只能在switch中只用number或enum;在Java7中,可以使用String。参考如下代码:

import java.util.*;

public class MyDemo {
    public static void main(String args[]) {
        String choice = "Car";
        switch (choice) {
            case "Car":
                System.out.println("Your choice is Car");
                break;
            case "Money":
                System.out.println("Your choice is Money");
                break;
            default:
                System.out.println("I don't know your choice");
                break;
        }
   }
}

2. 增加二进制表示(Binary Literals)

3. 数字字面量下划线支持(Underscores in Numeric Literals)

 Java7之前,Java支持十进制(123)、八进制(0123)、十六进制(0X12AB);现在,Java7增加二进制表示(0B11110001、0b11110001)。

 Java7同时支持在数字中间增加'_'作为分隔符,以增加可读性。参考如下代码:

public class MyDemo {
    public static void main(String args[]) {
        int binary = 0b0101001_1001;
        System.out.println("binary is :"+binary);
   }
}

4. 异常处理,捕获多个异常(Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking)

参考如下代码:

import java.io.*;

public class MyDemo {
    public void testMe() {  
        try {  
            // 输入整型数据错误
            Integer.parseInt("haha"); 
            
            // 文件不存在?
            File file = new File("D:\\LibAntiPrtSc_INFORMATION.log");
            BufferedReader in = new BufferedReader(new FileReader(file));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }
        }  
        catch (NumberFormatException | IOException e) { 
             e.printStackTrace();
        }  
    }  
    
    public static void main(String args[]) {
        new MyDemo().testMe();
   }
}

5. 泛型实例化类型自动推断(Type Inference for Generic Instance Creation)

在Java7之前,这样写的泛型代码:

Map<String, List<String>> myMap = new HashMap<String, List<String>>(); 

在Java7,以及之后,可以这样写:

Map<String, List<String>> myMap = new HashMap<>();

这个<>被叫做diamond(钻石)运算符,Java 7后这个运算符从引用的声明中推断类型。

6. 自动资源管理(The try-with-resources Statement)

Java中某些资源是需要手动关闭的,如InputStream,Writes,Sockets,Sql classes等。这个新的语言特性允许try语句本身申请更多的资源,这些资源作用于try代码块,并自动关闭。Java7之前的代码:

static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException {
  BufferedReader br = new BufferedReader(new FileReader(path));
  try {
    return br.readLine();
  } finally {
    if (br != null) br.close();
  }
}

在Java7,以及之后的版本,可以这样写:

static String readFirstLineFromFile(String path) throws IOException {
  try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    return br.readLine();
  }
}

7. Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods

这块还没看,待更新。

文章参考:

https://docs.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html#javase7 

posted @ 2021-06-21 10:39  那些年的事儿  阅读(85)  评论(0编辑  收藏  举报