黑马程序员技术交流社区

标题: 还记得这道"java国际测试题"嘛? 来温故知新吧! [打印本页]

作者: noiary    时间: 2014-9-3 20:20
标题: 还记得这道"java国际测试题"嘛? 来温故知新吧!
  1. /*
  2. 写出程序运行结果
  3. */
  4. class Test {

  5.         public static String output = "";
  6.         public static void foo(int i) {
  7.        
  8.                 try {
  9.                
  10.                         if(i == 1)
  11.                                 throw new Exception();
  12.                         output += "1";
  13.                 }
  14.                 catch(Exception e) {
  15.                
  16.                         output += "2";
  17.                         return;
  18.                 }
  19.                 finally {
  20.                
  21.                         output += "3";
  22.                 }
  23.                 output += "4";
  24.         }
  25.        
  26.         public static void main(String[] args) {
  27.        
  28.                 foo(0);
  29.                 System.out.println(output);
  30.                 foo(1);
  31.                 System.out.println(output);
  32.         }
  33. }
复制代码

作者: 孤鸢    时间: 2014-9-3 20:29
啊,见到异常头晕.....攻克ing
作者: 笑脸迷人    时间: 2014-9-3 21:27
恩,这题有意思的,要是将foo方法的返回值修改为int 然后在finally里面加上return   语句就更有意思了
作者: 卖艺人    时间: 2014-9-3 21:28
我刚刚看完这个,简直666啊
作者: 许愿じ☆VE杰    时间: 2014-9-3 22:46
学习了~
作者: Imp_x    时间: 2014-9-3 23:43
进来学习一下
作者: happymouse    时间: 2014-9-4 00:19
运行结果是:
134
13423

第二个结果我还真愣了一下,后来发现是上一次的运行结果没有清空导致的。
这个程序只要记得finally是无论如何都要执行一般不会出错,大部分同学可能
会以为return后就不再执行finally里面的语句了。
作者: wfaly    时间: 2014-9-6 15:39
学习了...Thanks




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