黑马程序员技术交流社区
标题:
关于return和finally的问题。
[打印本页]
作者:
林吉敏
时间:
2012-12-14 15:33
标题:
关于return和finally的问题。
本帖最后由 林吉敏 于 2012-12-14 19:56 编辑
写了下面这个代码,运行结果是7,想问下运行过程是怎样的?
return是在finally后再执行的,那下面两个return是怎么执行的
class Ftest
{
public int ft()
{
try
{
return 3;
}
finally
{
return 7;
}
}
}
class T7
{
public static void main(String[] args)
{
Ftest f=new Ftest();
int s=f.ft();
System.out.println("s="+s);
}
}
作者:
黑马_郑亮新
时间:
2012-12-14 16:04
本帖最后由 黑马_郑亮新 于 2012-12-14 16:06 编辑
public class Demo {
public static void main(String[] args) {
System.out.print(Function());
}
public static int Function()
{
int x = 18;
try {
System.out.println("try");
return x = 88; // 在finally 执行后才返回
} catch (Exception e) {
System.out.println("error=" + e);
}
finally
{
if (x > 28) {
System.out.println("x>28: " + x);
}
System.out.println("finally");
}
return 100; // 无法改变返回值
}
}
return是在finally执行后才返回的,且在finally无法改变返回值:
运行结果
try
x>28: 88
finally
88
作者:
Kevin123
时间:
2012-12-14 16:04
先是执行try中的,return3,finally肯定会执行,所有又执行return7,也就是最终的返回值是7,打印结果就是最后的返回值7,没有什么问题
作者:
臧盼
时间:
2012-12-14 16:32
finally是一定会执行的,程序先执行了try中的语句,返回3,然后执行finally中的语句,所以最终是返回7,finally在io中比较常用。
作者:
netboy032
时间:
2012-12-14 16:51
就先执行try里面的啊,然后再之心finally里面的语句;不管try里面有没有return,都要执行finally里面的语句
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2