public class Test2 {
public static void main(String[] args) {
Test2 obj=new Test2();
String a=obj.go();
System.out.print(a);
}
public String go() {
String q="hii";
try {
return q;
}
finally {
q="hello";
System.out.println("finally value of q is "+q);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么hii从函数返回后打印go(),在finally块中值已更改为"hello"?
该计划的输出是
finally value of q is hello
hii
Run Code Online (Sandbox Code Playgroud)
use*_*421 27
那是因为您返回了q在更改qfinally块中的值之前评估的值.你回来了q,评估了它的价值; 然后你q在finally块中改变了,这不会影响加载的值; 然后使用评估值完成返回.
不要写这样棘手的代码.如果它让写作它的人感到困惑,想象一下它会导致下一个人的问题,几年后当你在其他地方的时候.
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |