【发布时间】:2015-01-17 10:36:50
【问题描述】:
我遇到了几个在工作面试中经常被问到的问题(至少在我的国家 - 瑞士),我对一段应该很棘手的代码块的输出非常不确定。很高兴听到您认为正确答案是什么。
在这里:
 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;
}
}
}
但我知道答案必须是这三种可能性之一:
- 3
- 30
- 33
(PS:以防万一有人感兴趣,这里是所有问题:http://se.inf.ethz.ch/courses/2014a_spring/JavaCSharp/exercise_sessions/ExerciseSession5.pdf)
【问题讨论】:
-
不,我也不想要,我只是在运行之前寻找解释:)
-
这里可以看到其他解释:stackoverflow.com/questions/4559661/…
-
正确的答案是,您的 IDE 和/或 FindBugs 会警告您在 finally 块中返回,您修复代码,并且不再编写这样的代码。
-
有一个与此类似但使用字符串缓冲区的技巧问题。你可能也想学那个
标签: java