求大神们相助····
class text{
public static void main(String[] args) {
System.out.println(testt());
System.out.println(x);
}
static int x = 99;
public static int testt() {
try {
return x;
} catch (Exception e) {
} finally {
x = 8;
}
return x;
}
}
运行结果为:
99
8
按顺序执行为什么第二个为8?
------解决方案--------------------
finally中没有return,返回的是try或catch里的return,此题是try中的return。但是如LZ所知finally在return前执行,为什么finally对返回值x的修改没有起到作用?因为方法在return的时候并不是把它拥有的那个值给返回了,而是把x复制了一份返回。
所以99是x在finally前的复制,8是finally操作后x所存储额定值!
总之:第一个返回的是x在finally前的复制值,第二个是直接返回的x