① 新增了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. 是男人就下100层【第四层】——Crazy贪吃蛇(1)

    贪吃蛇是一款非常经典的游戏,这些经典游戏给我们的童年添加了不少乐趣,今天開始我们来一步一步的在Android设备上实现一款贪吃蛇游戏,我也是第一次写这个游戏,有可能会写错,或者走弯路,可是终于希望能有 ...

  2. SQL点滴30—SQL中常用的函数

    原文:SQL点滴30-SQL中常用的函数 该文章转载自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html 别人的总结,很 ...

  3. C# 标签(条码)

    C# 标签(条码) 上一篇说到条码的打印,主要是通过读取模板定义文件(XML文件),然后结合从数据库中读取的动态数据结合而产生条码.下面主要说一下如何设计这个条码模板.设计过程也很简单,只需要简单的拖 ...

  4. 在Win7中安装程序集到GAC

    原文:在Win7中安装程序集到GAC 微软为提高系统安全,自Vista推出后,在Windows系统中加入了一个新的东东——UAC(User Account Control),这样一个新的技术使得许多操 ...

  5. sugarcrm关于邮件设置几个不好理解的地方

    陈沙克日志 把我的过程记录下来,以免以后忘了     2008-06-11 12:32 sugarcrm关于邮件设置几个不好理解的地方 最近看sugarcrm的使用,别的基本使用,没有什么问题,几天就 ...

  6. 无线连接手机进行Android测试

    当每天走到哪都要拿一根数据线进行项目测试的时候,总是有一些焦急和烦躁的,如果能够无线连接测试就在好不过了. 这样不再是什么难事了,只需要几步走: 在进行无线连接测试的过程中,你的手机必须root了,这 ...

  7. bootstrap弹出框

    要想使用Bootstrap Popover(弹出框)则必须引入其依赖的文件: jquery.js这个必须的(还是要写在其他js前面,bootstrap是依赖jquery的哦) bootstrap-to ...

  8. 网页启动Windows服务

    如何在网页启动Windows服务   由于公司有许多windows服务进行业务的处理,所谓对服务的维护也是一个比较头痛的问题,因为自己也不知道服务什么时候自动停了,而且更主要的原因是服务都是由运维部门 ...

  9. using和yield return

    C#中的using和yield return混合使用 最近写代码为了为了省事儿用了几个yield return,因为我不想New一个List<T>或者T[]对象再往里放元素,就直接返回IE ...

  10. Dynamics CRM不发布JS调试

    本博客已迁移至   http://www.krely.cn/ 上个项目做了一年多,大多是在做JS的开发,由于开发人数比较多,着实被坑的不轻.因为JS修改完成之后必须要发布,对于我们动辄几千行的JS的调 ...