return~~~~~

return~~~~~

public class Test {
	public int sere() {
		try {
			System.out.println("ni");
			return 5;
		}catch(Exception e) {
			System.out.println("hao");
			return 6;
		}finally {
			System.out.println("nihao");
		}
	}
	public static void main(String[] args) {
		Test t=new Test();
		System.out.println(t.sere());
		
	}

}

所以说这个return 5;语句还是会执行咯,然后还会执行后面的语句是因为finally语句块的强制执行的原因?

http://img1.sycdn.imooc.com//climg/5d3ee9940001819005370617.jpg

像老师运行的程序中,return one/two也是会执行的咯?只是还要强制执行return -100000;语句。

返回的值时候-100000的原因是后面的返回值将前面的返回值进行了覆盖吗?


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

        同学你好,1、finally是与try-catch配合使用的哦!finally是无论try执行或是catch执行都会执行finally中的内容!这是finally的特性,所以finally是一定会执行的哦!

        2、同学的说法是正确的,后面的return会覆盖前面的返回值!

            程序遇见return;表示当前方法执行完成,就会退出方法!但是在try-catch-finally中比较特殊,退出方法之前要先执行finally块中的语句!

            当程序没有出现异常,在try块或finally块中存在return;语句时,会退出方法,不再运行try-catch-finally外的语句。

            当程序出现异常,在catch块或finally块中存在return;语句时,会退出方法,不再运行try-catch-finally外的语句。

                但在程序执行过程中,没有遇到return语句,执行完try-catch-finally语句块,还是会继续往下执行程序的哦~

            如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

慕九州6323415 2019-07-29 21:12:51

我的理解是return都放在最后执行,而且只执行最后一个return

  • 同学你好,return是在方法的最后执行,并且是最后一个return将前面的值覆盖! 继续加油! 祝:学习愉快~
    2019-07-30 09:51:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师