/*
2008年9月21日12:10:47
忙了一上午,上网差了n份资料,最终小弟得出了“finally 与 return 区别”
不对之处 恳请诸位牛人指正!
*/
class M
{ private static int a = 0; public static void main(String[] args)
{
show();
System.out.println(returnValue());
show();
} public static void show()
{
System.out.printf("a = %d\n", a);
}
public static int returnValue()
{
a = 1;
System.out.println("a = " + a);
try
{
a = 2;
System.out.println("a = " + a);
System.out.println("张三!");
return (a=5); //26行
//System.out.println("哈哈!"); //return后面不能再有其他代码 否则编译时会报错
}
finally
{
System.out.println("李四!");
System.out.println("a = " + a);
a = 3;
System.out.println("a = " + a);
return (a=14); //35行
}
}
}
/*
在JDK 1.6中的运行结果是:
------------------------
a = 0
a = 1
a = 2
张三!
李四!
a = 5
a = 3
14
a = 14
------------------------
注释掉26行代码 ,则在JDK 1.6中的运行结果是:
-----------------------
a = 0
a = 1
a = 2
张三!
李四!
a = 2
a = 3
14
a = 14
-----------------------
注释掉35行代码,在JDK 1.6中的运行结果是:
-------------------------
a = 0
a = 1
a = 2
张三!
李四!
a = 5
a = 3
5
a = 3
-------------------------
总结:
本程序形象的证明了:
如果try和finally中都有return时,肯定先执行try中的return,再执行
finally中的return, 因此最终返回值是finally中的return,也就是说虽然try
中的return也执行了,但finally中的return最终却覆盖了try中的return。*/
2008年9月21日12:10:47
忙了一上午,上网差了n份资料,最终小弟得出了“finally 与 return 区别”
不对之处 恳请诸位牛人指正!
*/
class M
{ private static int a = 0; public static void main(String[] args)
{
show();
System.out.println(returnValue());
show();
} public static void show()
{
System.out.printf("a = %d\n", a);
}
public static int returnValue()
{
a = 1;
System.out.println("a = " + a);
try
{
a = 2;
System.out.println("a = " + a);
System.out.println("张三!");
return (a=5); //26行
//System.out.println("哈哈!"); //return后面不能再有其他代码 否则编译时会报错
}
finally
{
System.out.println("李四!");
System.out.println("a = " + a);
a = 3;
System.out.println("a = " + a);
return (a=14); //35行
}
}
}
/*
在JDK 1.6中的运行结果是:
------------------------
a = 0
a = 1
a = 2
张三!
李四!
a = 5
a = 3
14
a = 14
------------------------
注释掉26行代码 ,则在JDK 1.6中的运行结果是:
-----------------------
a = 0
a = 1
a = 2
张三!
李四!
a = 2
a = 3
14
a = 14
-----------------------
注释掉35行代码,在JDK 1.6中的运行结果是:
-------------------------
a = 0
a = 1
a = 2
张三!
李四!
a = 5
a = 3
5
a = 3
-------------------------
总结:
本程序形象的证明了:
如果try和finally中都有return时,肯定先执行try中的return,再执行
finally中的return, 因此最终返回值是finally中的return,也就是说虽然try
中的return也执行了,但finally中的return最终却覆盖了try中的return。*/
return后面的语句不可达了,编译器会提示错误.
代码格式化一下,点发贴子框上的工具栏带#的一项,选择java