A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. * 第八题:用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行finally?
  3. */
  4. class Test8
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 System.out.println("return打印:"+tryTest());
  9.                 /* 结果分析说明:
  10.                  * 运行会打印两行字符串,因为一个是main方法打印,一个是tryTest打印,
  11.                  * 所以两行字符串打印的先后顺序不做参考。
  12.                  *
  13.                  * 打印可能性:
  14.                  * 1、如果"return打印"为0,"finally打印"为1;
  15.                  *         表示return指令在i++之前运行,所以是先执行try中的return再执行finally
  16.                  * 2、如果"return打印"为1,"finally打印"为1;
  17.                  *         表示i++在return指令之前运行,所以是先执行finally再执行try中的return
  18.                  *
  19.                  * 结论:
  20.                  * 经过运行发现,打印结果为:
  21.                  * finally打印:1
  22.                  * return打印:0
  23.                  * 所以,是先先执行try中的return再执行finally
  24.                  */
  25.         }
  26.         public static int tryTest()
  27.         {
  28.                 int i=0;
  29.                 try
  30.                 {
  31.                         return i;
  32.                 }
  33.                 finally
  34.                 {
  35.                         i++;
  36.                         System.out.println("finally打印:"+i);
  37.                 }               
  38.         }
  39. }
复制代码


3 个回复

正序浏览
看这个事先执行return.
回复 使用道具 举报
孟卫严 发表于 2015-7-11 16:57
这个应该不纠结啊,
try里面的语句先执行,然后执行finally里的语句

知道的话是不纠结,只是用代码证明一次
回复 使用道具 举报
这个应该不纠结啊,
try里面的语句先执行,然后执行finally里的语句
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马