① 新增了switch对字符串的支持,也就是说可以在switch之后直接使用字符串来进行判断,语法基本与Java7之前支持的语法一样。
② 对数值字面量的增强支持,首先是可以在源代码中直接使用二进制数据,但是需要在二进制之前加上“0b”或“0B”来表示,其次是在数值字面量中使用下划线,主要是为了便于阅读,但是在数字之前和之后是不允许的,比如“123_”或“_123”,换句话说,下划线只能出现在数字中间,否则无法通过编译。
③ 支持在一个catch子句中同时捕获多个异常,另外是在捕获并重新抛出异常时的异常类型变得更加精确。
            try{
int j = 4/0;
}catch(ArithmeticException | NullPointerException e){
}finally{
System.out.println("没有任何问题");
}
每个异常类型之间使用“|”来分隔,但是注意的是,在catch子句中声明捕获的这些异常类中,不能出现重复的类型,也不允许其中的某个异常是另外一个异常的子类,否则会出现如下的编译错误:“  错误: multi-catch 语句中的替代无法通过子类化关联”。如果在catch子句中声明了多个异常类,那么异常参数的具体类型是所有这些异常类型的最小上界。
④ try-with-resources语句的使用,java7对try语句进行了增强,使它可以支持对资源的自动回收管理,保证资源总是被正确的释放。注意:能够被try语句所管理的资源需要满足一个条件,就是Java类要实现java.lang.AutoCloseable接口,否则会出现编译错误,当需要释放资源的时候,该接口的close方法会被自动调用。
⑤ Java7中引入了一个新的注解,@SafeVarargs,意思是,如果开发人员确信某个使用了可变长度参数的方法,在与泛型类一起使用时不会出现类型安全问题,就可以用这个注解进行声明。在使用了这个注解之后,编译器遇到类似的情况,就不会再给出相关的警告信息。@SafeVarargs注解只能用在参数长度可变的方法或构造方法上,且方法必须声明为static或final,否则会出现编译错误。一个方法使用@SafeVarargs注解的前提是,开发人员必须确保这个方法的实现中对泛型类型参数的处理不会引发类型安全问题。
⑥ 脚本引擎介绍:一段脚本的执行需要由该脚本语言对应的脚本引擎来完成。一个Java程序可以选择同时包含多脚本语言的执行引擎,这完全由程序的需求决定。程序中所用到的脚本语言,都需要有相应的脚本引擎。脚本引擎管理器共支持三种查找脚本引擎的方式,分别通过名称、文件扩展名和MIME类型来完成。
语言绑定:语言绑定对象就是一个简单的哈希表,用来存放和获取需要共享的数据,所有数据都对应这个哈希表中的一个条目,是简单的名值对。
脚本的编译:脚本语言一般是解释执行的,脚本引擎在运行时需要先解析脚本之后再执行。一般来说,通过解释执行的方法来运行脚本的速度比编译之后再运行会慢一些。当一段脚本需要多次重复执行时,可以先对脚本进行编译。编译之后的脚本在执行时不需要重复解析,可以提高执行效率。不是所有的脚本引擎都支持对脚本进行编译。如果脚本引擎支持这一特性,它会实现javax.script.Compilable接口来声明这一点。脚本引擎的使用者可以利用这个能力来提高需要多次执行的脚本的运行效率。Java SE中自带的JavaScript脚本引擎是支持对脚本进行 编译的。
⑦ 对于构造方法声明了长度可变的参数,在获取构造方法的时候,要使用对应的数组类型的class对象。这是因为长度可变的参数实际上是通过数组来实现的。对于静态的内部类调用并没有特别之处,按照一般的方式来使用即可。而对于非静态的内部类来说,其特殊之处在于它的对象实例中都有一个隐含的对象引用,指向包含它的外部类对象。也正是这个隐含的对象引用的存在,使非静态内部类中的代码可以直接引用外部类中包含的私有域和方法。因此,在获取非静态内部类的构造方法的时候,类型参数列表的第一个值必须是外部类的Class对象。
值得一提的是:Java7为所有的与反射操作相关的异常类添加了一个新的父类java.lang.ReflectiveOperationException。在处理与反射相关的异常的时候,可以直接捕获这个新的异常。而在Java7之前,这些异常需要单独捕获。
⑧ 方法句柄是对Java中方法、构造方法和域的一个强类型的可执行引用。通过方法句柄可以直接调用该句柄所引用的底层方法。对于一个方法句柄来说,它的类型完全由它的参数类型和返回值类型来确定,而与它所引用的底层方法的名称和所在的类没有关系。方法句柄是由java.lang.invoke.MethodHandle类来表示的。在得到一个方法句柄之后,可以通过其type方法来查看其类型。该方法的返回值是一个java.lang.invoke.MethodType类的对象。MethodType类的所有对象实例都是不可变的,类似于String类。所有对MethodType类对象的修改都会产生一个新的MethodType对象。两个MethodType对象是否相等,取决于它们所包含的参数类型和返回值类型是否完全一致。

Java7新特性的更多相关文章

  1. java7新特性之Try-with-resources (TWR)

    java7新特性之Try-with-resources (TWR) This change is easy to explain, but it has proved to have hidden s ...

  2. java7新特性之Diamond syntax

    java7新特性之Diamond syntax Java 7 also introduces a change that means less typing for you when dealing ...

  3. java7新特性 java8新特性

    Java 7 的7个新特性 Java7语法新特性 JAVA8 十大新特性详解 http://www.jb51.net/article/48304.htm

  4. Java7 新特性 数值文本表示法

    今天和大家分享下 java7中新特性-数值文本表示法 首先,在原来jdk1.6中 如果需要将一个二进制的数值转换成十进制的话,一般情况下都会以下面的代码方式去实现. public static voi ...

  5. java7 新特性 总结版

    Java7语法新特性: 前言,这是大部分的特性,但还有一些没有写进去,比如多核 并行计算的支持加强 fork join 框架:这方面并没有真正写过和了解.也就不写进来了. 1. switch中增加对S ...

  6. Java7 新特性: try-with-resources

    Try-with-resources是java7中一个新的异常处理机制,它能够很容易地关闭在try-catch语句块中使用的资源. 利用Try-Catch-Finally管理资源(旧的代码风格)在ja ...

  7. Java7 新特性 —— java.nio.file 文件操作

    本文部分摘自 On Java 8 自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 java.nio.file 库,通过与 Java8 新增的 stream 结合可以使得文件操作变 ...

  8. Java7 新特性 switch 可以使用String

    今天和大家分享下 在java7中可以使用String 作为switch 中的参数. 原来在java7之前,switch只能去接收一个 byte.char.short.int 类型 现在在java7中 ...

  9. Java之Java7新特性之try资源句式

    一.原来写法: static String readFirstLineFromFile(String path) throws IOException { BufferedReader br = nu ...

随机推荐

  1. grunt的基本概念和使用

    grunt的基本概念和使用 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版 ...

  2. MySQL引擎介绍ISAM,MyISAM,HEAP,InnoDB

    MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL. 在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型IN ...

  3. [Android] Volley源代码分析(五岁以下儿童)Q \\ u0026一个

    Volley源代码分析系列那里一段时间,告诉我,有许多私人留言,同时一些问题抛出.对于一些简单的问题,我们跳,这两天被连接到朋友@smali提出的问题.告诉我你不得不赞叹查看源代码时的详细程度,大家一 ...

  4. leetcode[50] N-Queens

    题目:给定一个n,那么在n*n的棋盘里面放国际象棋的皇后,皇后之间互不在攻击范围.(皇后的攻击范围是她所在位置的哪一行,那一列,和她的正负1的对角线) The n-queens puzzle is t ...

  5. mysql的事物

    所谓的事物就是一组原子性的SQL语句,或者说是一个独立的工作单元. 1.事物拥有四大特征: ①原子性(atomicity):一个事物必须被分为一个不可分割的的最小单元,整个事物中的所有操作要么全部提交 ...

  6. C#:判断当前程序是否通过管理员运行

    原文:C#:判断当前程序是否通过管理员运行 public bool IsAdministrator() { WindowsIdentity current = WindowsIdentity.GetC ...

  7. PLSQL导入/导出数据方法

    PLSQL导入/导出数据方法 PLSQL导入/导出数据方法 以前导数据库信息的时候,总是会先开启sql窗口,把自己手写的建表文件复制进去,然后再导入数据信息. 今天突然懒得去找以前的建表文件,而想用S ...

  8. SSMS2008插件开发(2)--Microsoft Visual Studio 2008插件开发介绍

    原文:SSMS2008插件开发(2)--Microsoft Visual Studio 2008插件开发介绍 由于开发SSMS2008插件是通过VS2008进行的,有必要先介绍一下VS2008的插件开 ...

  9. Hypeiron Planning/Essbase修改规划类型名称

    1.修改planning关系库 1.1--修改Plan_type,例如将type_name “Plan1”修改为”Plan1ts”,提交 SELECT * FROM hsp_plan_type FOR ...

  10. C#自带组件

    C#自带组件 在项目正式上线后,如果出现错误,异常,崩溃等情况 我们往往第一想到的事就是查看日志 所以日志对于一个系统的维护是非常重要的 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; ...