欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

谈谈Java中try-catch-finally中的return语句

时间:2020-10-22 22:45:54|栏目:JAVA代码|点击:

我们知道return语句用在某一个方法中,一是用于返回函数的执行结果,二是用于返回值为void类型的函数中,仅仅是一个return语句(return ;),此时用于结束方法的执行,也即此return后的语句将不会被执行,当然,这种情况下return语句后不能再有其它的语句了。

在try-catch-finally语句中使用return语句遇到了一些疑问

代码一:

static int intc(){
int x =0;
try{
x=1;
return x;
}finally {
x = 3; 
}
}

代码二:在上面那段代码的finally语句中加入了return语句

static int intc(){
int x =0;
try{
x=1;
return x;
}finally {
x = 3;
return x;
}
} 

代码三:

static int intc(){
int x =0;
try{
x=1;
return x;
}finally {
x = 3;
return 0;
}
} 

那么这三个方法的执行结果是多少呢?

代码一:返回1;
代码二:返回3;
代码三:返回0;

其中的原理是怎么回事呢?

  原因是java虚拟机在执行具有返回值的方法时,会在本地变量列表中创建一块区域来存储方法的返回值,在执行返回语句时便会从这个区域中读取值进行返回。

  代码一中在try中将1赋值给变量x,然后将变量x的值复制到存储返回值的区域,最后返回值区域存储的就是1,执行返回语句时便返回一。

  而在代码二中,同样将1赋值给变量x,然后将x的值复制到存储返回值的区域,此时返回值的区域的值为1,然后跳转到finally语句中,此时将3赋值给局部变量x,然后在将x的 值复制到存储返回值的区域,最后执行返回语句,读取到的返回区域中的值就是3.

  代码三中,try中执行的语句是一样的,跳转到了finally语句中后,将3赋值给局部变量,然后将0赋值到存储返回值的区域,最后执行返回语句,读取到的返回区域中的值就是 0,所以就返回0。

上一篇:java实现jframe透明窗体示例

栏    目:JAVA代码

下一篇:Spring中的后置处理器BeanPostProcessor详解

本文标题:谈谈Java中try-catch-finally中的return语句

本文地址:http://www.codeinn.net/misctech/14769.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有