黑马程序员技术交流社区
标题:
return是在finally执行后才返回的,且在finally无法改变返回值
[打印本页]
作者:
李永科
时间:
2013-3-5 17:28
标题:
return是在finally执行后才返回的,且在finally无法改变返回值
本帖最后由 李永科 于 2013-3-5 17:30 编辑
class FinallyTest
{
public static void main(String[] args)
{
int flag=returnFlag();
if(flag==0)
{
System.out.println("return语句执行,返回flag的值:flag="+flag);
System.out.println("finally修改flag的值失败:flag="+flag);
}
else if(flag==1)
{
System.out.println("finally执行修改flag的值成功:flag="+flag);
}
}
public static int returnFlag()
{
System.out.println("returnFlag()方法被调用!");
int flag=0;
System.out.println("flag初始值flag="+flag);
try
{
System.out.println("return执行结束返回flag="+flag);
return flag;
}
finally
{
flag=1;
System.out.println("finally执行结束,修改flag的值flag="+flag);
}
}
}
图片1.jpg
(21.94 KB, 下载次数: 9)
下载附件
2013-3-5 17:29 上传
运行结果
作者:
黄涵峰
时间:
2013-3-5 20:36
流程是这样的,return和finally代码是顺序执行下来的,从上往下。
至于运行时出现的打印顺序,这个原因是因为finally是必执行代码块,优先级高于主函数。
所以会出现“return是在finally执行后才返回的,且在finally无法改变返回值”这种打印情况
1.png
(64.13 KB, 下载次数: 9)
下载附件
2013-3-5 20:32 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2