4-11的return执行流程

4-11的return执行流程

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

老师,1、我梳理一下return在try---catch---finally中的执行流程:

try中的b+=10,得到的值是20,下一行代码return b,这里不会直接返回,因为finally块的语句必须得被执行,return b=20先存起来,等执行完finally的代码再返回。

可是finally也有return,此时替换原先try的,返回finally自己的return.

老师上述理解的对吗?

2、当我把finally语句块里的return删除,try语句块的return b=20正常执行,因为finally必须被执行,跳转过去,finally语句块里写有b+=10,这里b=30,但是try返回的是20,并没有被finally语句块改变数值,最后返回的还是20.

3、老师,为什么要将test方法设置为静态的:public static int test(int b){}

正在回答

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

1回答

同学你好,1、关于return在try-catch-finally中的执行流程,同学的理解是对的哦!

2、当把finally语句块里的return删除,try语句块的return b=20正常执行,执行到finally语句后,并没有return 语句来改变返回值,所以执行的还是try块中的返回值是20!

3、test方法设置为静态,是因为在主方法中是直接调用的test方法,而并没有创建对象,通过实例对象来调用test方法,所以test需要static修饰的静态方法,才能直接调用哦!

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

  • 鱼儿0001 提问者 #1
    谢谢老师的耐心回复。第三个疑问,老师的回答我自己理解一下,老师帮我分析分析我理解的对不对:主方法是静态方法,想要简便地调用test 方法,将test方法设置为静态的,此时可以直接调用。老师,int m=test(num);这样是将返回值赋给了m,打印m就可以了吧?2、如果test不是静态方法,在主方法中调用,是不是比较麻烦,是:Test t=new Test();---->t.test(num);这样吗
    2019-06-09 21:33:58
  • 好帮手慕小班 回复 提问者 鱼儿0001 #2
    同学的理解是正确的哦! 就是这样哟! 继续加油~ 如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2019-06-10 09:37:19
  • 鱼儿0001 提问者 回复 好帮手慕小班 #3
    好的,谢谢老师!
    2019-06-10 14:56:53
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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