java7增加的特性

2019/08/10 java语言

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 {
            //一定执行的
        }

​ 支持多异常捕获,但是多个异常之间不能存在继承关系,如FileNotFoundExceptionIOException存在继承关系则不行。

4、try-with-resource语法糖

​ 在java7之间,资源的连接释放一直是一个很头疼的问题,不管去从程序的编写上,还是思维的考虑上总有欠缺的地方,资源管理的要求是,不管连接资源也好,连上资源做了什么操作也好,发生了多少异常,一定要正确释放资源。java7对这块就做了增强

   try (BufferedReader bufferedReader = new BufferedReader(new FileReader("q123"))) {
            //执行操作
        }catch(IOException e){
            e.printStackTrace();
        }
       //由语法糖帮我们关闭连接

使用这个语法糖唯一的要求就是java类要实现java.lang.AutoCloseable接口。

Search

    欢迎添加我的个人微信号

    个人微信哦

    Table of Contents