- package day01;
- public class test7
- {
- public static String boov(String str)
- {
- try
- {
- str="“return返回给boov”";
- return demo.demo_1();
- }
- finally
- {
- System.out.println("finally执行");
- return demo.demo_2();
- }
- }
- public static void main(String[] args)
- {
- String Str = null;
- String newStr=boov(Str);
- System.out.println(newStr);
- }
- }
- class demo{
- public static String demo_1(){
- System.out.println("Demo1");
- return "demo1";
- }
- public static String demo_2(){
- System.out.println("Demo2");
- return"demo2";
- }
- }
复制代码 你试一下这一段代码就知道了
try中的return的确被执行了,你可以想象成这个return被放进了一个临时容器,但是下面还有一个finally需要执行,这个时候boov没有立刻结束,而是等finally中的代码执行完了以后才返回,可是很不巧 finally中又有一个return,这个return也进去了临时容器,把前面的return给覆盖掉了...
其实这道题的考察重点并不在这里..因为没有人蛋疼的在finally里写return,假如你在finally里写了return 那你这段程序前面的那一大段代码就变得毫无意义了..反正它怎么执行,怎么return,最终返回的还是我finally里的return...
不知道这样回答你能不能明白
|