读书人

求大神们帮助#183;#183;#183;#183

发布时间: 2012-09-20 09:36:50 作者: rapoo

求大神们相助····
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

读书人网 >J2EE开发

热点推荐