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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张 涛 中级黑马   /  2012-9-9 18:46  /  1517 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张 涛 于 2012-9-10 10:54 编辑

  1. public class  smallT
  2. {
  3.         public static void  main(String args[])
  4.         {
  5.                 smallT t  = new  smallT();
  6.                 int  b  =  t.get();
  7.                 System.out.println(b);
  8.         }
  9.         
  10.         public int  get()
  11.         {
  12.                 try
  13.                 {
  14.                         return 1 ;
  15.                 }
  16.                 finally
  17.                 {
  18.                         return 2 ;
  19.                 }
  20.         }
  21. }
复制代码

4 个回复

倒序浏览
public class  smallT
{
        public static void  main(String args[])
        {
                smallT t  = new  smallT();
                int  b  =  t.get();
                System.out.println(b);
        }
      
        public int  get()
        {
                try
                {
                        return 1 ;
                }
                finally
                {
                        return 2 ;
                }
        }
}
解释:return 2重载return 1,所以输出结果为2
回复 使用道具 举报
什么奇怪的问题啊
很正常啊,打印的结果是2啊
finally中的不是有return2嘛,就赋值给了b
回复 使用道具 举报
lz,这是正常的,
public int get() {
                try {
                        return 1;
                } finally {
                        return 2;
                }
        }
在try{}finally{}
是finally{}是必须要执行的,无论try{}怎样
回复 使用道具 举报
public class SmallT {
      SmallT()
      {
       System.out.println("初始化");
      }
public static void main(String[] args) {
       SmallT t  = new  SmallT();
                int  b  =  t.get();
                System.out.println(b);
        }
        public int  get()
        {
                try
                {  
                    System.out.println("try....");
                        return 1 ;
                }
                finally
                {
                    System.out.println("finally...");
                        return 2 ;
                }
        }
}

输出结果:
初始化
try....
finally...
2
通过上面的输出结果,我们就能非常清楚的了解到程序执行的顺序。
发现调用get()方法,最后执行到的是finally,所以会return 2,并赋值给b。

在try{}   catch(Exception e){}  finally{}中,finally是一定会执行到的,即使return结束函数,也会执行
finally;
finally代码块的作用主要是用于关闭资源,
只有在执行System.exit(0);//结束jvmfinally才执行不到。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马