黑马程序员技术交流社区

标题: jdk1.7的新特性 [打印本页]

作者: 黑马张英涛    时间: 2013-1-23 10:53
标题: jdk1.7的新特性
本帖最后由 黑马张英涛 于 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, 下载次数: 39)

enhance1.7.png

作者: 王少雷    时间: 2013-1-23 13:41
不错,学习了
作者: 舒远    时间: 2013-1-23 15:09
List<Integer> piDigits = [3, 1, 4];Map<Integer,String> map={1:"abc",2:"xxx"};
这个是jdk1.7不支持的。而且jdk1.8目前所发布的版本也不支持。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2