这是基础测试题的其中一题,不知道是否相同
这是我的解答供你参考- /*
- * 6: 用代码证明
- * 在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
- *
- * 思路与步骤
- * (1)定义一个返回int类型的方法checkMethod(),在方法里定义一个int i = 1;
- * (2)try里面写入return ++i;
- * (3)finally里面为i = 5;为i赋值为5
- * (4)根据主函数里的输出值判断try、finally的执行顺序
- * 如果是先执行return ++i,那么应该先得到返回i值,i值为2,再执行finally的i赋值语句
- * 但是此时已经不能影响return的i值了,所以输出为2
- * 如果是先执行finally的i赋值语句,那么此时i=5,再执行try的return ++i;那么返回值
- * 是6,说以输出为6
- *
- * 验证结果:输出:2
- * 所以先执行return 再执行finally
- *
- * */
- public class Test6 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- System.out.println(checkMethod());
- }
- public static int checkMethod()
- {
- int i = 1;
- try {
- // TODO Auto-generated method stub
- return ++i;//如果先执行,那么返回值是2,如果后执行,返回值是6
- } catch (Exception e) {
- // TODO: handle exception
- }finally{
- i = 5;
- }
- return i;
- }
- }
复制代码
|