黑马程序员技术交流社区
标题:
finally不能改变返回值的理解
[打印本页]
作者:
liujkh123
时间:
2013-5-25 17:19
标题:
finally不能改变返回值的理解
package com.itheima;
/**
* 第7题:写一个类证明return是在finally执行后才返回的,且在finally无法改变返回值。
* @author Administrator
*
*/
/*
* 这道题目一开始挺不清楚什么意思的,后来多查查才知道.
* 在try catch中添加了返回语句的话,finally中就无法再对返回值进行修改了。
* 但是如果在try。。。catch中没有return的话finally则当然可以改变返回值了,
*/
public class Test7 {
public static void main(String[] args) {
Test7 t7 = new Test7();
int i = t7.test();
System.out.println("return执行了,但是返回值是:" + i);
}
public int test(){
int i = 0;
try{
i = 2;
throw new Exception();
}catch(Exception e){
//e.printStackTrace();
i = 3;
return i;
}finally{
i= 4;
System.out.println("finally执行了!这个时候i的值为" + i );
}
}
/*这段代码返回的就是4了
public int test1(){
int i = 0;
try{
i = 2;
throw new Exception();
}catch(Exception e){
//e.printStackTrace();
i = 3;
}finally{
i= 4;
System.out.println("finally执行了!这个时候i的值为" + i );
}
return i;
}
*/
}
复制代码
作者:
袁梦希
时间:
2013-5-25 17:29
这个好像是基础测试题,楼主尽量定义有意义的方法名,不要用test,test1这样命名。
作者:
liujkh123
时间:
2013-5-25 19:51
好的 谢谢老师
作者:
Changer_s
时间:
2013-5-25 20:42
test(),return返回为3,有点不理解,尽然是4,然后return回到了catch变为了3,我有点不理解,难道是因为return上一句话:i=3吗?
test1(),return返回为4,这个我能懂,是一步一步的走下来,必然是4
楼主你这个问题挺好的,能解释一下吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2