java - 尝试/最后 - 工作面试

标签 java

我正在经历几个在工作面试中经常被问到的问题(至少在我的国家 - 瑞士),并且我非常不确定一段应该很棘手的代码块的输出。很高兴听到您认为正确的答案是什么。

这里是:

 public class LanguageTest12 {

   public static void main(String... args){
       System.out.println(foo());
   }

   private static int foo() {
      int a = 1, b = 2;
      try {
          return a+b;
      } finally {
          a = 10;
          b = 20;
          return a+b;
     }
   }
 }

但是我知道答案一定是这三种可能性之一:

  1. 3
  2. 30
  3. 33

(PS:以防万一有人感兴趣,这里是所有问题:http://se.inf.ethz.ch/courses/2014a_spring/JavaCSharp/exercise_sessions/ExerciseSession5.pdf)

最佳答案

finally block 用于必须始终运行的代码,无论是否发生错误条件(异常)。

finally block 中的代码在 try block 完成后运行,如果发生捕获的异常,则在相应的 catch block 完成后运行。即使在 try 或 catch block 中发生未捕获的异常,它也应该始终运行(除非您在 try block 中得到 System.exit(0) ,因为它会在转到应用程序之前关闭应用程序)最后阻止)。

所以你的答案是 2. 30

关于java - 尝试/最后 - 工作面试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27024824/

相关文章:

java - 如何使用带有证书的 Apache Commons SSLServer/SSLClient

java - java中3点的行列式

java - 在 Java 中使用 Google Drive 中的 Google Spreadsheet API 创建电子表格

java - Gradle缓存与存储库的哈希比较

java - LinkedHashMap 签名

java - 将 3DESede 与 javax.crypto 的 PKS5 填充一起使用时,密文长度错误

java - 如何验证@PathVariable是否已设置?

java - 数组逻辑错误

Java 映射和原语

java - hibernate ,别名