JDK新特性

JDK7新特性


1. switch可以消化String了。
比如:
    public static void switchString(String s){
        switch (s){
        case "db": ...
        case "wls": ...
        case "idm": ...
        case "soa": ...
        case "fa": ...
        default: ...
        }
    }

2. 新的整数字面表达方式 - "0b"前缀和"_"连数符,提升程序员的幸福感。
 a. 表示二进制字面值的前缀, 0b:
 比如以下三个变量的值相同:
        byte b1 = 0b00100001;     // New
        byte b2 = 0x21;        // Old
        byte b3 = 33;        // Old

 b. 用下划线连接整数提升其可读性,自身无含义,不可用在数字的起始和末尾:
    long phone_nbr = 021_1111_2222;

3. 简化了泛型对象创建的语法 - "菱形 new",以下两个语句等价:
        ArrayList<String> al1 = new ArrayList<String>();    // Old
        ArrayList<String> al2 = new ArrayList<>();        // New

4. 为所有的reflect操作异常找了个新爸爸 - ReflectOperationException,孩儿们是:
    ClassNotFoundException, 
    IllegalAccessException, 
    InstantiationException, 
    InvocationTargetException, 
    NoSuchFieldException, 
    NoSuchMethodException

5. catch有了多重捕获功能,也玩起了包养的勾当,以下代码心领神会:
    try{
        // code
    }
    catch (SQLException | IOException ex) {
        // ...
    }

6. 异常精确重抛 - 重抛时自动造型为子类,有点半主动制导武器的style:
    public void test() throws NoSuchMethodException, NoSuchFieldException{    // 子类
        try{
            // code
        }
        catch (RelectiveOperationException ex){    // 父类
            throws ex;
        }
    }

7. 发明了try()结构 - Try with Resources,能够自动接住异常并关闭资源(所谓的资源需要利用新的java.lang.AutoCloseable接口),注意以下代码中try后面跟的是"("不是"{":
    try(BufferedReader br = new BufferedReader(new FileReader("/home/oracle/temp.txt"))){
        ... br.readLine() ...
    }
try-with-resources语句可以带catch,也可以向上例一样一个catch也没有。

你可能感兴趣的:(JDK新特性)