我有一个简单的Java类,如下所示:
public class Test {
private String s;
public String foo() {
try {
s = "dev";
return s;
}
finally {
s = "override variable s";
System.out.println("Entry in finally Block");
}
}
public static void main(String[] xyz) {
Test obj = new Test();
System.out.println(obj.foo());
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是这样的:
Entry in finally Block
dev
Run Code Online (Sandbox Code Playgroud)
为什么s不在finally块中覆盖,而是控制打印输出?
我所经历的问题,每一个良好的.NET开发人员应该能够回答,是这个问题的内容和方法非常深刻的印象,因此,在同样的精神,我要求的Java/Java EE的开发者这个问题.
有什么问题你认为应在良好的Java/Java EE的程序员能够回答?
我将此问题标记为社区维基,因为它不是用户特定的,它旨在为整个编程社区提供服务.
期待一些惊人的回应.
编辑:请回答问题,如评论中所建议的那样,这样人们也可以学习一些关于语言的新知识.