① 新增了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. c语言中实现从0-1的随机数输出

    原文:c语言中实现从0-1的随机数输出 今天晚上同学问了一个巨简单的问题,问我怎么用c语言输出0-1的随机数,可别说,一时之间还想不出来.在写的过程中发现,直接调用random函数还不能实现,用以下方 ...

  2. 使用Net.Mail、CDO组件、JMail组件三种方式发送邮件

    原文:使用Net.Mail.CDO组件.JMail组件三种方式发送邮件 一.使用Net.Mail 需要服务器认证,大部分服务器端口为25. { MailMessage mailMsg = mailMs ...

  3. 客户端javascript

    <script> function moveon(){ var answer=confirm("hello,good morning!");//通过弹出对话框询问用户 ...

  4. Oracle 11g sys,system 密码忘记设置解决办法

    原文:Oracle 11g sys,system 密码忘记设置解决办法 1.启动sqlplus 2.请输入用户名:  sqlplus/as sysdba 3.输入口令: 直接回车 4.连接到: Ora ...

  5. 算法课上机实验(一个简单的GUI排序算法比较程序)

    (在家里的电脑上Linux Deepin截的图,屏幕大一点的话,deepin用着还挺不错的说) 这个应该是大二的算法课程上机实验时做的一个小程序,也是我的第一个GUI小程序,实现什么的都记不清了,只记 ...

  6. 自己写CPU第九阶段(5)——实现负载存储指令2(改变运行阶段)

    我们会继续上传新书<自己动手写CPU>.今天是第42篇.我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事.不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9% ...

  7. 一个自己给自己挖的MVC的坑

    事情是这样的,我前几天突然想起没用过MVC提交之后刷新当前页面的方式更新View(一般情况是不会有人这么做的吧),我这人手快,就试了下,结果出现了个我想不明白的结果,Action代码如下: [Http ...

  8. JAVA修饰符类型(转帖)

    JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的 ...

  9. Step one : 熟悉HTML

    //H1 1 <html> <head> <title>BeiJing</title> </head> <body> <h ...

  10. 创建FTP的Site并用C#进行文件的上传下载

    创建FTP的Site并用C#进行文件的上传下载 文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服 ...