代码如下:
public class Test
{
public static void main(String[] args)
{
System.out.print(tt());
}
public static int tt()
{
int b = 23;
try
{
System.out.println("yes");
return b+=88;
}
catch(Exception e)
{
System.out.println("error : " + e);
}
finally
{
if(b>25)
{
System.out.println("b>25 : "+b);
}
System.out.println("finally");
}
return b;
}
}
代码说明:
主要是用来测试return和finally语句到底哪个先执行.在try语句中,返回了b=111; 在finally语句中判断是否大于25,如果大的话就输出大..程序的结果是
yes
b>25 : 111
finally
111
也就是说明finally语句在return语句执行完了以后才执行的.
OK,那么问题来了,如果我把finally语句改成这样呢:
finally
{
if(b>25)
{
System.out.println("b>25 : "+b);
}
System.out.println("finally");
return 100;
}
也就是在finally中加入return 语句,返回不同的值. 那么,返回值到底是原来的b值(88),还是新的这个返回值呢? 废话不多,看结果:
yes
b>25 : 111
finally
100
这样又说明了一个问题,finally语句块里面的return把原来的return给覆盖了!!变成了新的返回值了.
OK,继续闷骚:我把代码改成这样:
try
{
System.out.println("yes");
return b;
}
catch(Exception e)
{
System.out.println("error : " + e);
}
finally
{
if(b>25)
{
System.out.println("b>25 : "+b);
}
System.out.println("finally");
b=100;
}
也就是把 try中的返回语句改成返回b值,然后在finally中改变b的值. 那么返回结果到底是原来的b值呢, 还是更改过的b值呢?结果如下:
yes
finally
23
http://blog.sina.com.cn/s/blog_4ab42fce0100bs9r.html