黑马程序员技术交流社区

标题: 懵懂的测试题 [打印本页]

作者: 不破大地    时间: 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