zoukankan      html  css  js  c++  java
  • 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、简化参数方法调用。去掉了方法签名中同时出现变参和泛型时才会出现的类型警告信息。

  • 相关阅读:
    Centos 7.6搭建Skywalking6.5+es6.2.4
    Skywalking入门介绍,skywalking6.5.0 +mysql (windows) 搭建
    使用springcloud gateway搭建网关(分流,限流,熔断)
    Elastalert
    Docker 部署ELK之Sentinl日志报警
    Docker 部署ELK
    基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题
    sentry之二:sentry配置钉钉和email
    sentry之一:sentry安装
    全链路追踪技术选型:pinpoint vs skywalking
  • 原文地址:https://www.cnblogs.com/plan123/p/5600691.html
Copyright © 2011-2022 走看看