JAVA7增加的特性
介绍一下Coin项目
openJDK中的Coin项目的目的是维护对java语言的语法增强,在Coin项目开始之初,曾经被广泛的向社区征求想法,java7中的特性就来源于此,有六条分别是 switch中使用字符串,数值字面量的改进,优化的异常处理,try-with-resource语法糖,优化变长参数的方法调用等。
1、switch中使用字符串
这个特性很简单,并没有对switch做出语法的变更,只是多了一种开发人员可以选择的条件判断的数据类型,看一下语法:
public void switchCase(String info){
String result = new String();
switch (info){
case "dev" :
result = "开发环境";
break;
case "prod" :
result = "正式环境";
break;
default:
result = "默认环境";
}
}
java语法规范中不允许出现魔法值
,所以自然的就想到了枚举,没错,枚举和这个特性配合起来,简直不要太舒服。
2、数值字面量的改进
编程语言中,字面量(literal)指的是在源代码中直接表示的一个固定的值,java语言也有,但是只是支持基本类型的字面量,java7对这些做了增强。
2.1、二进制整数字面量
java7之前,是这样的
八进制: 0123
十进制:默认
十六进制:0x1f(a,b,c,d,e,f)
java7之后,增加了二进制
二进制: 0b001(0B001)
2.2、数字之间可以使用分割线
我们习惯了100,345,456
这种西式表达方式,(千,百万,十亿)等,在java中也支持我们更好的去看数字,不过使用的不是逗号,而是下划线
int a = 123_23_34;
3、优化异常处理
java7之前,异常处理是这样的
InputStream inputStream ;
try {
inputStream = new FileInputStream("path路径");
inputStream.read();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
//一定会执行的
}
java7之后是这样的
InputStream inputStream ;
try {
inputStream = new FileInputStream("path路径");
inputStream.read();
}catch(ClassCastException | IOException e){
e.printStackTrace();
}finally {
//一定执行的
}
支持多异常捕获,但是多个异常之间不能存在继承关系,如FileNotFoundException
和IOException
存在继承关系则不行。
4、try-with-resource语法糖
在java7之间,资源的连接释放一直是一个很头疼的问题,不管去从程序的编写上,还是思维的考虑上总有欠缺的地方,资源管理的要求是,不管连接资源也好,连上资源做了什么操作也好,发生了多少异常,一定要正确释放资源。java7对这块就做了增强
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("q123"))) {
//执行操作
}catch(IOException e){
e.printStackTrace();
}
//由语法糖帮我们关闭连接
使用这个语法糖唯一的要求就是java类要实现java.lang.AutoCloseable
接口。