黑马程序员技术交流社区
标题:
关于try-catch-finally的一个问题,求高手指点
[打印本页]
作者:
阿牛
时间:
2012-3-30 18:27
标题:
关于try-catch-finally的一个问题,求高手指点
本帖最后由 牛秦勇 于 2012-3-30 18:28 编辑
大家认为下面程序运行结果是多少?100还是200?
class tryDemo
{
public static void main(String[] args)
{
System.out.println(getValue());
}
public static int getValue()
{
int value = 0;
try
{
value = 100;
return value;
}
finally
{
value = 200;
}
}
}
结果是100,但,为什么呢?求高手指点。
作者:
鲍亚坤
时间:
2012-3-30 18:33
return 返回的是100。。。
没有200的return
class tryDemo
{
public static void main(String[] args)
{
System.out.println(getValue());
}
public static int getValue()
{
int value = 0;
try
{
value = 100;
return value; //将100返回。。
}
finally
{
value = 200;
}
}
}
复制代码
作者:
李成航
时间:
2012-3-30 18:43
你是将value=100值返回后,才将value重新赋值为200.而200这个值并未被返回。
作者:
王运科
时间:
2012-3-30 18:51
try
{
value = 100;
return value; //此时将100返回,作为调用这个方法返回的值
}
finally
{
value = 200; //此时value的值为200,但是调用这个方法返回的值还是100
}
作者:
阿牛
时间:
2012-3-30 18:54
明白了,谢谢各位
作者:
黄小钒
时间:
2012-3-30 18:55
class tryDemo
{
public static void main(String[] args)
{
System.out.println(getValue());
}
public static int getValue()
{
int value = 0;
try
{
value = 100;
return value; //将100返回。。
}
finally
{
value = 200;
[color=Blue]//return value; // 若在此处返回 则打印结果为 200[/color] }
}
}
复制代码
作者:
黄小钒
时间:
2012-3-30 18:57
class tryDemo
{
public static void main(String[] args)
{
System.out.println(getValue());
}
public static int getValue()
{
int value = 0;
try
{
value = 100;
return value; //将100返回。。
}
finally
{
value = 200;
//return value; // 若在此处返回 则打印结果为 200
}
}
}
复制代码
作者:
李井山
时间:
2012-3-30 19:00
你的 int getValue()在try时就返回了value=100;所以返回100;
想返回200的话,就finally
{
return value = 200;
}
后面return返回的value会覆盖前面的value
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2