A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张英涛 中级黑马   /  2013-1-23 10:53  /  1412 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马张英涛 于 2013-1-23 14:22 编辑

•Binary Literals(二进制字面值?)可以直接用二进制来表示数值(byte,short,int,long)方法是在前面加0b或0B,
    如:int binary=0b1001_1110;
•Underscores in Numeric Literals(数值的数字之间可以用下划线连接),
    如:long tenBillion=10_000_000_000,long bytes=0b11010010_01101001_10010100_10010010;
•Strings in switch Statements(字符串可以用在switch语句中了)
    如:String name="abc";
        switch(name){
                case "abc":...        
        }
•Type Inference for Generic Instance Creation(泛型实例的创建可以通过类型推断来简化),
    如:Map<String, List<String>> myMap = new HashMap<>();
•Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods(改进了在可变参数方法中传递非具体化的参数时的警告和错误)
        (不太明白)
•The try-with-resources Statement(try-with-resources语句块)
    如:static String readFirstLineFromFile(String path) throws IOException {
                   try (BufferedReader br = new BufferedReader(new FileReader(path))) {
                          return br.readLine();
                   }
           }
当该语句执行完或抛出异常时将自动调用对象的close()方法释放资源。不用finally来关闭了。
使用该语句的前提是资源实现了AutoClosable()接口,jdk1.7已经为绝大部分资源对象实现了这个接口。
该语句块中也可以有多个语句,如:
try (
      java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);
      java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
    ) {....}
该语句块也可以有catch语句:
try (Statement stmt = con.createStatement()) {
           .....
}catch(SQLException e){....}

•Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
(catch多个异常和改进了重新抛出异常时的类型检测) 如:
catch (IOException ex) {
     logger.log(ex);
     throw ex;
catch (SQLException ex) {
     logger.log(ex);
     throw ex;
}该语句中有很多重复代码,现在可以用:
catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
}代替了。
至于重新抛出异常时的类型检测,看不太明白,求解释。
个人理解,还有不明白的地方求达人解释啊。
另外有些资料说可以对集合类直接赋值:如List<Integer> piDigits = [3, 1, 4];Map<Integer,String> map={1:"abc",2:"xxx"};
自己在1.7的环境下测试不能编译,文档里也没找到,到底有没有这回事啊?

enhance1.7.png (47.89 KB, 下载次数: 35)

enhance1.7.png

2 个回复

倒序浏览
不错,学习了
回复 使用道具 举报
List<Integer> piDigits = [3, 1, 4];Map<Integer,String> map={1:"abc",2:"xxx"};
这个是jdk1.7不支持的。而且jdk1.8目前所发布的版本也不支持。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马