黑马程序员技术交流社区

标题: 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, 下载次数: 11)

运行结果

运行结果

作者: 黄涵峰    时间: 2013-3-5 20:36
流程是这样的,return和finally代码是顺序执行下来的,从上往下。
至于运行时出现的打印顺序,这个原因是因为finally是必执行代码块,优先级高于主函数。
所以会出现“return是在finally执行后才返回的,且在finally无法改变返回值”这种打印情况

1.png (64.13 KB, 下载次数: 12)

1.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2