在finally块中为变量赋值null [英] Assigning null to variable in finally block
本文介绍了在finally块中为变量赋值null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码的输出为Test Passed;有人向我解释为什么?
The output of the following piece of code is "Test Passed"; can someone explain to me why ?
public class Test {
public static void main(String args[]) {
System.out.println(new Test().print());
}
protected StringBuilder print() {
StringBuilder builder = new StringBuilder();
try {
builder.append("Test ");
return builder.append("Passed!!!");
} finally {
builder = null;
}
}
推荐答案
Java的作用如下:
Basically, what Java does is the following:
StringBuilder valueToReturn = builder.append("Passed!!!");
executeFinallyBlock();
return valueToReturn;
无论你在finally块内做什么,Java都保留了对返回值的引用,并返回该参考。所以它变成:
Whatever you're doing inside the finally block, Java has kept a reference to the value to return, and returns that reference. So it becomes:
StringBuilder valueToReturn = builder.append("Passed!!!");
builder = null;
return valueToReturn;
这篇关于在finally块中为变量赋值null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文