This question already has answers here:
Multiple returns: Which one sets the final return value?
(7个答案)
5年前关闭。
我正在经历几个在工作面试中经常问到的问题(至少在我的国家-瑞士),而且我不确定应该是棘手的代码块的输出。很高兴听到您认为正确答案是什么。
这里是 :
但是我知道答案必须是这三种可能性之一:
3
30
33
(PS:以防万一有人感兴趣,这里是所有问题:http://se.inf.ethz.ch/courses/2014a_spring/JavaCSharp/exercise_sessions/ExerciseSession5.pdf)
(7个答案)
5年前关闭。
我正在经历几个在工作面试中经常问到的问题(至少在我的国家-瑞士),而且我不确定应该是棘手的代码块的输出。很高兴听到您认为正确答案是什么。
这里是 :
 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)
最佳答案
finally
块用于必须始终运行的代码,而无论是否发生错误条件(异常)。
在try块完成之后,如果发生捕获的异常,则在相应的catch块完成之后,运行finally块中的代码。即使try或catch块中发生未捕获的异常,它也应始终运行(除非try块中有System.exit(0),因为它会在进入finally块之前关闭应用程序)。
所以你的答案是2。30
10-04 21:05