• java7的新特性


    1、Java语言和平台的区别

    • Java语言 Java语言是静态类型、面向对象的语言

    • Java平台 平台是提供运行时环境的软件。Java虚拟机(JVM)负责把类文件形式的代码链接起来并执行。JVM不能直接解释Java语言的源文件,要先把源文件转换成类文件

    2、Java是编译型语言还是解释型语言?

        大多数开发人员都知道Java源文件需要编译成.class文件才能在JVM中运行。.class中的字节码首先会被JVM解释,但在稍后即时编译(JIT)。JVM字节码是从一种人类可读的源码想机器码过渡的中间状态。字节码实际上是一种中间语言(IL)邢台,不是真正的字节码。Java体系中真正的编译器是JIT。所以有人说Java是动态编译的,就是因为JIT的即时编译。如果有人问及你“Java是编译型语言还是解释型语言”,你可以回答“都是”

    3、Java7引入的新特性

        Java7引入了6个新特性,它们分别是:switch语句中的string、数字常量的新形式、改进的异常处理、try-with-resources、钻石语法以及变参警告位置的修改

        3.1、在Java6及以前,switch语句中的case语句只能是byte、char、short和int(也可以是对应的封装类型Byte、Character、Short和Integer)或者枚举常量。Java7中新增了String常量类型。

        3.2、在Java6及以前,如果要处理二进制值,就要借助于基础转换,或者调用parseX方法。比如说你想让int x用位模式表示十进制102,你可以这样写

    1
    2
    3
    4
    5
    /*代码繁琐,影响效率*/
    int x = Integer.parseInt("1100110",2);
     
    /**现在好了,Java7中可以这样写*/
    int x = 0b1110010;

    当然也可以在数字中加入下划线例如404_555_0122。   

        3.3、改善后的异常处理。异常处理有两处改进--multicatch和final重抛。java7中允许在一个catch中抓取多个异常。先看下代码示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    try{
        doSomethingWhichMightThrowIOException();
        doSomethingElseWhichMightThrowSQLException
    catch(FileNotFoundException|ParseException|ConfigurationExcetion e){
        ...
    }catch(final Exception e){
        ...
        throw e;
    }

    关键字final表明实际抛出的异常就是运行时遇到的异常。java培训这被称为final重抛,这样就不会抛出笼统的异常类型,从而避免在上层只能用笼统的catch捕获。

        3.4、try-with-resources(TWR)。基本设想是把资源的作用域限定在代码块内,当程序离开这个代码块的时候,资源会自动关闭。先看下Java6和Java7资源管理语法的区别

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    /*Java6中的资源管理语法*/
    InputStream is = null;
    try{
        is = url.openStream();
        try{
            byte[] buf = new byte[2048];
            int len;
            while((len = is.read(buf)) >= 0){
                out.write(buf,0,len);
            }
        } catch(IOException ioe){
            ...
        } finally{
            try{
                out.close();
            } catch(IOException closeOute){
                ...
            }
        }
    } catch(FileNotFoundException fnfx){
        ...
    } finally{
        try{
            if(is != null) is.close();
        } catch(IOException closeInx){
            ...
        }
    }
     
    /**Java7中的try-with-resources语法大大减少了错误发生的可能性*/
    try(OutputStream out = new FileOutputStream(file);
        InputStream is = url.openStream() ){
            byte[] buf = new byte[2048];
            int len;
            while((len = is.read(buf)) >= 0){
                out.write(buf,0,len);
            }
        }
    /*这是资源自动化管理代码的基本形式--把资源放在try的圆括号内。在这段代码中使用的资源会在处理完成后自动关闭*

        3.5、钻石语法。针对创建泛型定义和实例太过繁琐的问题,Java7做了一项改进,

        3.6、简化参数方法调用。去掉了方法签名中同时出现变参和泛型时才会出现的类型警告信息。

  • 相关阅读:
    docker学习
    redis哨兵部署
    HUE中一些重要元数据表的DDL整理
    Autosys中ON_HOLD和ON_ICE的区别
    Spark结构化API的执行过程——Logical Plan & Physical Plan
    关于Spark中Columns的引用方法
    关于Spark Dataset API中的Typed transformations和Untyped transformations
    关于Kafka Consumer 与 Partitions
    使用sed根据变量值注释掉文件中相匹配的记录行
    sqoop export to teradata时出现java.lang.NullPointerException
  • 原文地址:https://www.cnblogs.com/plan123/p/5600691.html
Copyright © 2020-2023  润新知