黑马程序员技术交流社区
标题:
java中的一点不解
[打印本页]
作者:
乐行者广裁
时间:
2013-5-19 11:46
标题:
java中的一点不解
本帖最后由 乐行者广裁 于 2013-5-19 22:01 编辑
java中 return和finaly谁最后执行?举例说明
作者:
李德全
时间:
2013-5-19 12:09
你自己写一个return和finaly的输出语句不就知道了。可能你return不能那啥,但是你可以这样:return 函数;这个函数打印输出。
作者:
小石头39910
时间:
2013-5-19 12:31
public
class
Test
{
public
static
void
main(String[] args)
{
System.out.print(tt());
}
public
static
int
tt()
{
int
b = 23;
try
{
System.out.println("yes");
return
b+=88;
}
catch
(Exception e)
{
System.out.println("error : " + e);
}
finally
{
if
(b>25)
{
System.out.println("b>25 : "+b);
} System.out.println("finally");
}
return
b;
}
}
代码说明:
主要是用来测试return和finally语句到底哪个先执行.在try语句中,返回了b=111; 在finally语句中判断是否大于25,如果大的话就输出大..程序的结果是
yes
b>25 : 111
finally
111
也就是说明finally语句在return语句执行完了以后才执行的.
OK,那么问题来了,如果我把finally语句改成这样呢:
finally
{
if(b>25)
{
System.out.println("b>25 : "+b);
}
System.out.println("finally");
return 100;
}
结果:
yes
b>25 : 111
finally
100
说明:finally中的return把try语句中的return覆盖了
所以说:
碰到try语句中的return,那么先把return的值放在某个地方,然后执行finally里面的代码块,如果有返回值覆盖语句,就改变先前放在某个地方的那个值,如果没有,就把那个地方的东西取出来返回出去
作者:
神之梦
时间:
2013-5-19 12:42
小石头39910 发表于 2013-5-19 12:31
public class Test
{
public static void main(String[] args)
辛苦啊
选择<>这个插入代码吧
作者:
刘胜寒
时间:
2013-5-19 21:53
return 后执行。。。
代码奉上,供君参考:
//定义一个类
class Test{
//用来测试 return是在finally执行后才返回的
public int tryCatch()
{
int n = 4;
try{
System.out.println("try中 n = "+n);
return n;
}
finally{
n++;
System.out.println("finally中 n = "+n);
// return n;
}
}
}
public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().tryCatch());
}
}
复制代码
作者:
刘胜寒
时间:
2013-5-19 21:53
楼主注意结贴。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2