Java 7有什么新特性?
答案:2 悬赏:80
解决时间 2021-01-24 02:22
- 提问者网友:愿为果
- 2021-01-23 21:22
Java 7有什么新特性?
最佳答案
- 二级知识专家网友:鱼忧
- 2021-01-23 22:25
几乎方方面面都有重大更新,举几个语法上的新特性,其他方面建议你去查找相关资料。
1、switch...case支持字符串。
2、数字字面量改进,加入二进制字面量表示:如0b001001(十进制数字9)或0B001001;
数字字面量中可以使用下划线分割,以使长数字便于阅读,如100000可以写成100_000,就好比现实生活中写成100,000便于阅读一样。
3、优化异常处理,Throable类增加addSuppressed和getSuppressed方法,用来记录被其他异常抑制而无法正常抛出的异常;
一个catch子句可以捕获多个异常,每个异常之间使用“|”分割,如catch (ClassNotFoundException cnfe | IOException ioe);
还有其他的一些优化,如异常类中包含更多信息,精确异常抛出等等。
4、Java 7之前通常在try里创建资源,finally里对资源进行关闭等操作,Java 7中可以使用try-with-resources语句,而不需要关心资源的关闭,如——
try (InputStream input = new FileInputStream("D:/test1.txt");
OutputStream output = new FileOutputStream("D:/test2.txt")) {
byte[] buffer = new byte[1024];
int len = -1;
while ((len = input.read(buffer) != -1 ) {
output.write(buffer, 0, len);
}
}
将资源的创建写在try后的括号里,这样就不需要使用finally语句来保证资源的正确关闭,由虚拟机自动完成,程序员只需要关心业务逻辑即可。
5、关于变长参数的优化,增加了@SafeVarargs注解,Java 7之前在使用可变长参数的方法时,如果参数传递的是不可具体化的类型(如泛型类型List)会产生警告信息,如果希望进制该警告,需要使用@SuppressWarnings("unchecked")注解进行声明,Java 7中,如果开发人员确信某个使用了可变长参数的方法在与泛型类一起使用时不会出现类型安全问题,就可以使用@SafeVarargs注解来声明。注意该注解只能用于可变长参数的方法或者构造方法,并且方法必须声明为static或final。
1、switch...case支持字符串。
2、数字字面量改进,加入二进制字面量表示:如0b001001(十进制数字9)或0B001001;
数字字面量中可以使用下划线分割,以使长数字便于阅读,如100000可以写成100_000,就好比现实生活中写成100,000便于阅读一样。
3、优化异常处理,Throable类增加addSuppressed和getSuppressed方法,用来记录被其他异常抑制而无法正常抛出的异常;
一个catch子句可以捕获多个异常,每个异常之间使用“|”分割,如catch (ClassNotFoundException cnfe | IOException ioe);
还有其他的一些优化,如异常类中包含更多信息,精确异常抛出等等。
4、Java 7之前通常在try里创建资源,finally里对资源进行关闭等操作,Java 7中可以使用try-with-resources语句,而不需要关心资源的关闭,如——
try (InputStream input = new FileInputStream("D:/test1.txt");
OutputStream output = new FileOutputStream("D:/test2.txt")) {
byte[] buffer = new byte[1024];
int len = -1;
while ((len = input.read(buffer) != -1 ) {
output.write(buffer, 0, len);
}
}
将资源的创建写在try后的括号里,这样就不需要使用finally语句来保证资源的正确关闭,由虚拟机自动完成,程序员只需要关心业务逻辑即可。
5、关于变长参数的优化,增加了@SafeVarargs注解,Java 7之前在使用可变长参数的方法时,如果参数传递的是不可具体化的类型(如泛型类型List
全部回答
- 1楼网友:空山清雨
- 2021-01-23 23:03
Modularization 模块化– JSR 294 或者 Project Jigsaw
JVM 对动态语言的支持
更多新的 I/O APIs 即将完成,包括真正的异步I/O 和最终的真实的文件系统 file system API – JSR 203
对XML本地语言支持. (可能的probable)
Safe rethrow – 允许catch捕获语句让编译器更加聪明的知道基于什么情况下重新throw什么内容。
Null dereference expressions – Null 和 ‘?’ syntax 比较,语法类似 Groovy… 让开发者避免过多的空值验证。
更好的类型推断 Better type inference
多重捕获Multi-catch
JSR 296 – Swing 应用框架 application framework – 这方面需要更简单和简洁。
“小的”sun方面的修改有:
升级的类加载class loader 架构;
XRender pipeline for Java 2D:是Open JDK ntegrators Challenge project项目;
Swing 更新 – JXLayer, DatePicker, CSS styling 等;
JavaFX
sun方面“快速”的修改,主要是性能更新:
* 并发方面的细微调整 concurrency tweaks (JSR 166),更好的支持Multicore
* G1 垃圾收集器Garbage collector - 带来更小的中断时间,有希望替代 CMS (Concurrent mark sweep) GC
* 64 bit VM的压缩指针Compressed pointer
* MVM-lite – 多个虚拟机能够独立运行应用和允许用kill -9杀死java应用。
还有更详细的介绍,不过太多了。
JVM 对动态语言的支持
更多新的 I/O APIs 即将完成,包括真正的异步I/O 和最终的真实的文件系统 file system API – JSR 203
对XML本地语言支持. (可能的probable)
Safe rethrow – 允许catch捕获语句让编译器更加聪明的知道基于什么情况下重新throw什么内容。
Null dereference expressions – Null 和 ‘?’ syntax 比较,语法类似 Groovy… 让开发者避免过多的空值验证。
更好的类型推断 Better type inference
多重捕获Multi-catch
JSR 296 – Swing 应用框架 application framework – 这方面需要更简单和简洁。
“小的”sun方面的修改有:
升级的类加载class loader 架构;
XRender pipeline for Java 2D:是Open JDK ntegrators Challenge project项目;
Swing 更新 – JXLayer, DatePicker, CSS styling 等;
JavaFX
sun方面“快速”的修改,主要是性能更新:
* 并发方面的细微调整 concurrency tweaks (JSR 166),更好的支持Multicore
* G1 垃圾收集器Garbage collector - 带来更小的中断时间,有希望替代 CMS (Concurrent mark sweep) GC
* 64 bit VM的压缩指针Compressed pointer
* MVM-lite – 多个虚拟机能够独立运行应用和允许用kill -9杀死java应用。
还有更详细的介绍,不过太多了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯