① 新增了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. Oracle SQL in 超过1000 的解决方案

    处理 Oracle SQL in 超过1000 的解决方案 处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项 ...

  2. 删除Python UserWarning[已解决]

    在使用MySQLdb包后,导入测试时发现一个警告. /usr/lib/python2.6/site-packages/setuptools-0.8-py2.6.egg/pkg_resources.py ...

  3. jQuery无限级联下拉框插件

    自己编写jQuery插件 之 无限级联下拉框   因为是级联,所以数据必须是树型结构的,我这里的测试数据如下: 看下效果图: 1.>图一: 2.>图二: 3.>图三: 由图可知,下拉 ...

  4. 使用rem设计移动端自适应页面二(转载)

    由于日常需求以无线居多,所以可以在业务中做一些尝试,如 rem,刚接触这个特性的时候,曾经一度爱不释手,仿佛在无线开发的坎坷路上寻找到一条捷径.然而随着使用范围的扩大,慢慢的发现了一些使用 rem 带 ...

  5. HAProxy+apache实现web服务动静分离

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支 ...

  6. maven 启蒙

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.为了替代ANT的Apache开源项目.现在的项目越来越大.ANT已经不适用了. 1.部署m ...

  7. 为ASP.NET MVC应用程序读取相关数据

    为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...

  8. WPF开发的FTP文件上传工具

    前言 最近楼主在改版的项目里有使用到FTP上传文件,所以看到之前的项目里FTP上传的功能,然后抽个时间学习一番,做着做着就作出了这个工具了(虽然有些验证的功能没加上),但是基本的上传功能还是很好用的, ...

  9. windows下搭建Cygwin环境

    windows下搭建Cygwin环境 在上一篇博文<Android学习——windows下搭建NDK_r9环境>中,我们详细的讲解了在windows下进行Android NDK开发环境的配 ...

  10. 使用MVCJqGrid

    使用MVCJqGrid的心得   最近公司网站进行升级,项目要用.net mvc,mysql和轻量级orm框架dapper.由于美工页面出不来啊,让我先写简单写写后台的列表,同事说用MvcJqGrid ...