博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几个有用的java 7特性
阅读量:6969 次
发布时间:2019-06-27

本文共 1939 字,大约阅读时间需要 6 分钟。

不等不承认,距离Java SE 9 的发布只有2个月不到的时间了。但本人很low,直到最近才开始在实践中使用Java SE 7 给程序员们带来的一些新特性。更别说Java SE  8的lambda表达式, Stream API等高级特性了。所以,在本人未来的几篇博客里,会陆续介绍从Java SE 7 开始的一些新特性。写这些内容其实也是为了巩固自己所学,因为作者本人也是一个learner,不是什么大牛。好了,废话到此为止,接下来作者将介绍几个很实用的java 7特性,文中若有用词不当或专业术语不准的现象,望见谅!

几个实用的Java 7特性:

 

1. 异常处理的改进:

在Java SE7里,一个catch可以捕获多个异常,这样可以减少重复代码。每个异常之间用 | 隔开。比如下面的这种形式:

try  {

       //具体的处理代码

        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {

      //捕获异常的处理方式

          }

然而在Java SE 7之前,对应异常的捕获你必须采用如下形式:

try  {

       //具体的处理代码

        }catch (InstantiationException ) {

              //捕获异常的处理方式

          }

         catch (IllegalAccessException ) {

              //捕获异常的处理方式

          }

        catch (ClassNotFoundException ) {

              //捕获异常的处理方式

          }

   注意,如果一个catch处理了多个异常,那么这个catch的参数默认就是final的,你不能在catch块里修改它的值。 

另外,用一个catch处理多个异常,比用多个catch每个处理一个异常生成的字节码要更小更高效。 

 

 

2. try-with-resources语句:

注意:try-with-resources作者的理解就是在try语句块中书写打开资源的代码。Java 7之前需要在finally中关闭socket、文件、数据库连接等资源;Java 7中在try语句中申请资源,可以实现资源的自动释放(资源类必须实现java.lang.AutoCloseable接口,一般的文件、数据库连接等均已实现该接口,close方法将被自动调用)。 比如下面的代码:

try ( Scanner in = new Scanner(Paths.get("/user/share/dict/words"));

      PrintWriter out = new PrintWriter("/tmp/out.txt")

)   {

while (in.hasNext())

          out.println(in.next().toLowerCase());

}

采用上述方式,不管代码块如何退出只要in和out对象之前已经被创建出来,他们都会被关闭。省去了主动关闭资源的繁琐代码。

 

 

3.NIO2,这个特性主要是指代对路径Path的使用。使用它只需要一行代码既可实现读取一个文件的全部内容:比如:

   byte[] bytes = Files.readAllBytes(path); 

倘若希望将文件内容读取为一个字符串,可以在readAllBytes后调用:

   String content = new String(bytes, StandardCharses.UTF_8);

 

 

4.将字符串转为数字的的方法中,字符串可以带"+","-"号等:

比如: double x = Double.parseDouble("+1.0");是一句正确的代码,不会抛出异常。

 

 

5.对Null的检查:

Objects类提供了requireNonNull方法以便以检查参数是否为null,比如下面的例子:

  public void process(String content) {

         this.content = Objects.requireNonNull(content);

  }

上述代码中,如果content为null,则会抛出一个空指针异常,这个貌似没多大作用的改进却有利于程序的提示,其实还可以给产生的异常提供一个消息字符串,就像下面这个形式:

  public void process(String content) {

         this.content = Objects.requireNonNull(content, "the content can not be null");

  }

 

转载于:https://www.cnblogs.com/lhever/p/5005155.html

你可能感兴趣的文章
多线程 NSCondition线程同步(消费者等待工厂制作完成,工厂发消息)
查看>>
python 冒泡排序加入判断
查看>>
WEB+NFS+DNS的搭建
查看>>
SQL Server2008导出数据生成文件
查看>>
Symfony2出现加载WEB调试工具栏错误
查看>>
shell 信号捕捉处理
查看>>
基于虚拟主机的FTP配置
查看>>
分享一个iptables防火墙的脚本和防御ddos***的脚本
查看>>
服务器生成文件后,客户端直接响应下载
查看>>
域控之间角色转换(BDC转换为PDC)
查看>>
passwd修改用户密码
查看>>
启用Windows2012R2 重复数据删除服务 的血泪史!
查看>>
mysql安装
查看>>
从强化学习到深度强化学习(上)
查看>>
Shell重定向&>file、2>&1、1>&2的区别
查看>>
windows server CMD命令汇总 不断更新中
查看>>
PPPOE基本配置
查看>>
.ASM实例的SGA ,查看所有ASM文件大小
查看>>
U盘通用PE安装CentOS
查看>>
如何杀掉(kill)Oracle中的会话(Session)
查看>>