return~~~~~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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语句块的强制执行的原因?
像老师运行的程序中,return one/two也是会执行的咯?只是还要强制执行return -100000;语句。
返回的值时候-100000的原因是后面的返回值将前面的返回值进行了覆盖吗?
正在回答
同学你好,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语句块,还是会继续往下执行程序的哦~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
我的理解是return都放在最后执行,而且只执行最后一个return
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧