A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李永科 于 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)

运行结果

运行结果

1 个回复

倒序浏览
流程是这样的,return和finally代码是顺序执行下来的,从上往下。
至于运行时出现的打印顺序,这个原因是因为finally是必执行代码块,优先级高于主函数。
所以会出现“return是在finally执行后才返回的,且在finally无法改变返回值”这种打印情况

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

1.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马