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接口。