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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦大忠 中级黑马   /  2013-8-14 10:07  /  975 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先来一段代码:
public class Test6
{
        public static void main(String[] args)
        {
                Test6 t = new Test6();
                System.out.println(t.test());
        }
        int test1()
        {
                System.out.println("我是try中的return,我执行了!");
                return 1;
        }
        int test2()
        {
                System.out.println("我是finally中的return,我执行了");
                return 2;
        }
    int test()
        {
               
                try
                {
                        return test1();
                }
                finally
                {
                        return test2();
                }
        }
}

运行结果是:我是try中的return,我执行了!
我是finally中的return,我执行了
2

认识:
如果try中的return先执行了,那么它必然先调用test1()这个方法,test1()中的return
应该也是执行了,但是却没有立刻返回,而是主函数继续执行finally{},当遇到finally中的
return时,它先返回了一个2,函数就结束了,所以try中的return返回的1还在栈当中,
没有返回

我们在写一个finally中没有返回值的代码:
ppublic class Test6
{
        public static void main(String[] args)
        {
        Test6 t = new Test6();
        System.out.println(t.test());
        }
        int test()
        {
                int x = 1;
                try
                {
                        return x;
                }
                finally
                {
                        x=x+1;
                }
        }
       
}
输出结果是:1
这个结果可以看出try中的return是在finally先执行的

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

1 个回复

倒序浏览
嗯,不错,可以把代码放在<>这个东东里面
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马