A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不破大地 中级黑马   /  2013-6-19 20:49  /  1559 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

基础测试题中一个比较懵懂的题目,下面的代码是否正确??,哪里有不妥??,还望各位大神指教。。。

问题:写一个类证明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执行完后才执行其返回值的

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1 淡定

查看全部评分

3 个回复

倒序浏览
定义一个int成员变量,然后定义一个方法返回这个值,在flinally里进行修改赋值,然后打印方法返回的值。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
正确的,你可以通过eclipse的断点调试功能进行观察,,,,
finally表示一定回执行,除非jvm退出,,但是并不表示它回改变return的结果,
你下面的注释就写的很正确,

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
这个题,需要自己解决吧?百度都不让查的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马