黑马程序员技术交流社区

标题: 基础测试题-try语句块中有return,finally如何执行 [打印本页]

作者: 一只特立独行的猪    时间: 2014-6-29 17:07
标题: 基础测试题-try语句块中有return,finally如何执行
本帖最后由 钱维莹 于 2014-6-30 07:53 编辑

  1. package com.itheima;

  2. public class Test7 {

  3.         /**
  4.          * 7、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
  5.          * @author QWY
  6.          */
  7.         
  8.         static String str = "";
  9.         
  10.         public static void main(String[] args) {
  11.                
  12.                 String s = test();
  13.                 System.out.println("s = "+s);
  14.                 System.out.println("str = "+str);
  15.         
  16.         }
  17. //        @SuppressWarnings("finally")
  18.         public static String test()
  19.         {
  20.                 try
  21.                 {
  22.                         str = "try";
  23.                         return str;
  24.                 }
  25.                 finally
  26.                 {
  27.                         str = "finally";
  28. //                        return str;
  29.                 }
  30.         }
  31. }
复制代码

      题目: 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?上面是我写的程序,大家看看给点建议哈
      程序运行结果是输出  s = try   str = finally。
说明当try中有return语句时,会在返回str(此时str == “try”)之前执行finally语句块(此时str == "finally",但返回的str的值仍然是"try")。
      把代码中的注释去掉,即在finally中加上return语句,结果是输出  s = finally   str = finally。
说明当finally语句块中有return语句时,将直接返回str的值而不执行try语句块中的return。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2