java7有什么用_几个有用的java 7特性

不等不承认,距离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");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值