资讯
安全
论坛
下载
读书
程序开发
数据库
系统
网络
电子书
微信学院
站长学院
QQ
考试
频道栏目
java7
|
安全资讯
|
安全公告
|
病毒预警
|
人物
|
企业招聘
|
其他综合
|
登录
注册
首页
>
资讯
>
java7
> 正文
Java7语法新特性
16-01-22
来源:[db:作者]
收藏
我要投稿
Java7语法新特性:
1. switch中增加对String类型的支持。
Java代码
public
String generate(String name, String gender) {
String title =
""
;
switch
(gender) {
case
"男"
:
title = name +
" 先生"
;
break
;
case
"女"
:
title = name +
" 女士"
;
break
;
default
:
title = name;
}
return
title;
编译器在编译时先做处理:
①case只有一种情况,直接转成if;
②如果只有一个case和default,则直接转换为if...else...;
③有多个case,先将String转换为hashCode,然后对应的进行处理,JavaCode在底层兼容Java7以前版本。
2. 数字字面量的改进
①增加二进制表示
Java7前支持十进制(123)、八进制(0123)、十六进制(0X12AB)
Java7增加二进制表示(0B11110001、0b11110001)
②数字中可添加分隔符
Java7中支持在数字量中间增加'_'作为分隔符,更直观,如(12_123_456),下划线只能在数字中间,编译时编译器自动删除数字中的下划线。
3. 异常处理
①Throwable类增加addSuppressed方法和getSuppressed方法,支持原始异常中加入被抑制的异常。
异常抑制:在try和finally中同时抛出异常时,finally中抛出的异常会在异常栈中向上传递,而try中产生的原始异常会消失。
在Java7之前的版本,可以将原始异常保存,在finally中产生异常时抛出原始异常:
Java代码
public
void
read(String filename)
throws
BaseException {
FileInputStream input =
null
;
IOException readException =
null
;
try
{
input =
new
FileInputStream(filename);
}
catch
(IOException ex) {
readException = ex;
//保存原始异常
}
finally
{
if
(input !=
null
) {
try
{
input.close();
}
catch
(IOException ex) {
if
(readException ==
null
) {
readException = ex;
}
}
}
if
(readException !=
null
) {
throw
new
BaseException(readException);
}
}
}
在Java7中的版本,可以使用addSuppressed方法记录被抑制的异常:
Java代码
public
void
read(String filename)
throws
IOException {
FileInputStream input =
null
;
IOException readException =
null
;
try
{
input =
new
FileInputStream(filename);
}
catch
(IOException ex) {
readException = ex;
}
finally
{
if
(input !=
null
) {
try
{
input.close();
}
catch
(IOException ex) {
if
(readException !=
null
) {
//此处的区别
readException.addSuppressed(ex);
}
else
{
readException = ex;
}
}
}
if
(readException !=
null
) {
throw
readException;
}
}
}
②catch子句可以同时捕获多个异常
Java代码
public
void
testSequence() {
try
{
Integer.parseInt(
"Hello"
);
}
catch
(NumberFormatException | RuntimeException e) {
//使用'|'分割,多个类型,一个对象e
}
}
③try-with-resources语句
Java7之前需要在finally中关闭socket、文件、数据库连接等资源;
Java7中在try语句中申请资源,实现资源的自动释放(资源类必须实现java.lang.AutoCloseable接口,一般的文件、数据库连接等均已实现该接口,close方法将被自动调用)。
Java代码
public
void
read(String filename)
throws
IOException {
try
(BufferedReader reader =
new
BufferedReader(
new
FileReader(filename))) {
StringBuilder builder =
new
StringBuilder();
String line =
null
;
while
((line=reader.readLine())!=
null
){
builder.append(line);
builder.append(String.format(
"%n"
));
}
return
builder.toString();
}
}
try子句中可以管理多个资源:
Java代码
public
void
copyFile(String fromPath, String toPath)
throws
IOException {
try
( InputStream input =
new
FileInputStream(fromPath);
OutputStream output =
new
FileOutputStream(toPath) ) {
byte
[] buffer =
new
byte
[
8192
];
int
len = -
1
;
while
( (len=input.read(buffer))!=-
1
) {
output.write(buffer,
0
, len);
}
}
}
4. 变长参数方法的优化
Java7之前版本中的变长参数方法:
Java代码
public
int
sum(
int
... args) {
int
result =
0
;
for
(
int
value : args) {
result += value;
}
return
result;
}
当参数为不可具体化的类型时,如List,编译器将产生警告,需要使用@SuppressWarnings("unchecked")注解声明;Java7中使用@SafeVarargs注解抑制编译器警告。
Java代码
@SafeVarargs
public
static
T useVarargs(T... args) {
return
args.length >
0
? args[
0
] :
null
;
}
Java代码
VarargsWarning.useVarargs(
new
ArrayList
());
点击复制链接 与好友分享!
回本站首页
相关TAG标签
上一篇:
Java 7 的7个新特性
下一篇:
Java5、Java6、Java7的新特性
相关文章
热门专题推荐
vmware
win7激活工具
win10激活工具
excel
word
office激活
小马激活工具
重装系统
数据恢复
u盘启动工具
图文推荐
被封两年 人人影视宣告卷土重来!
网络管理利器:七大免费网络工具
.M4A格式转换成.MP3格式的三种方法简介
Ubuntu LTS 系统学习使用体会和实用工具软件汇总 6.04 8.04 10.04 12.04 14.04
文章
推荐
·
不掉线的路由器!路由特殊技术分析!
·
如何通过路由器来控制上网
·
宽带路由器故障巧排除
·
关于忘记Cisco交换机路由器口令后如何
·
远程管理路由器 注意“安全”
·
路由器端口映射的原理及设置方法介绍
·
教你用路由器日志快速定位及排除故障
·
教你设置无线路由 提高无线网BT下载速
·
win7激活工具
·
win10激活工具
·
win7激活工具旗舰版
·
office2010激活密钥
·
windows7激活密钥
·
office2010激活工具
·
小马激活工具
·
win10激活工具
热门新闻
·
锤子坚果Pro发布后,罗永浩哭了
·
想实习的大学党看过来!这些科技巨头最
·
罗永浩锤子发布会抢先消息:锤子科技新
·
Google新一代系统Fuchsia OS界面曝光
·
中国唯一连续运营20余年的网络游戏,还
·
iPhone都便宜了 为何国产手机越来越贵
·
丢人!谷歌和Facebook竟被虚假企业电邮
·
中国移动支付震惊日本网友 为什么美国
关于我们
|
联系我们
|
广告服务
|
投资合作
|
版权申明
|
在线帮助
|
网站地图
|
作品发布
|
Vip技术培训
|
举报中心
版权所有:
红黑联盟
--致力于做实用的IT技术学习网站