黑马程序员技术交流社区
标题:
懵懂的测试题
[打印本页]
作者:
不破大地
时间:
2013-6-19 20:49
标题:
懵懂的测试题
基础测试题中一个比较懵懂的题目,下面的代码是否正确??,哪里有不妥??,还望各位大神指教。。。
问题:写一个类证明return是在finally执行后才返回的,且在finally无法改变返回值。
public class Test8
{
public static int demonstrate()
{
int x = 6;
try
{
System.out.println("try-x=" + x);
// 检测return语句的中X
return x;
}
finally // 一定会执行的语句
{
x = 8;
//打印finally中X的值
System.out.println("final-x=" + x);
}
}
public static void main(String[] args)
{
System.out.println("demonstrate .."+demonstrate());
//调用demonstrate()结果为try-x=6 final-x=8 demonstrate..6
//验证了return的值没有变化,证明了return是在finally
//证明原理是: 打印结果 返回值为 6 ,所以finally不能改变try里面的返回值。
//虽然先打印try中的内容,包括return,再打印 finally中的内容,最后打印 demo:1
//但是在先执行return时,return执行后的值将存入到栈内存,在程序执行完毕之后最终再出栈,
//所以return最终还是在finally执行完后才执行其返回值的
作者:
王靖远
时间:
2013-6-19 21:33
定义一个int成员变量,然后定义一个方法返回这个值,在flinally里进行修改赋值,然后打印方法返回的值。
作者:
yasyas001
时间:
2013-6-20 08:43
正确的,你可以通过eclipse的断点调试功能进行观察,,,,
finally表示一定回执行,除非jvm退出,,但是并不表示它回改变return的结果,
你下面的注释就写的很正确,
作者:
peerless2012
时间:
2013-6-20 09:02
这个题,需要自己解决吧?百度都不让查的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2