黑马程序员技术交流社区
标题:
谁能解释一下下面代码
[打印本页]
作者:
superob123
时间:
2014-6-2 01:22
标题:
谁能解释一下下面代码
class Test
{
public static void main(String[] args)
{
}
}
复制代码
作者:
superob123
时间:
2014-6-2 01:26
class Test
{
public static void main(String[] args)
{
System.out.println(test());
}
public static int test()
{
try
{
return 1;
}
finally
{
return 2;
}
}
}
复制代码
作者:
superob123
时间:
2014-6-2 01:27
它打印结果为2,为什么呢
作者:
chenzhiyuan
时间:
2014-6-2 02:35
finally,方法中无论前面有没有return,finally都会执行,所以是2
public static int test(int a) {//是6
try {
a=5;
return a;
} finally {
a=6;
return a;
}
}
之前看到一个例子,忘记细节了,好像场景是a是上面个return的值
作者:
心灵的微幸福
时间:
2014-6-2 06:51
在执行 public static int test()
{
try
{
return 1;
}
finally
{
return 2;
}
}
}这一段代码时,try与finally都会执行,try返回的1,而finally返回的是2,(finally是必须执行代码),那么最终返回的是2.
作者:
Lex
时间:
2014-6-2 08:02
楼上正解
作者:
黎志勇
时间:
2014-6-2 09:09
因为无论try的代码段是否成功执行,都将执行finally的代码段,所以会以最后的一个return为准,返回2。
作者:
kongyan4696
时间:
2014-6-2 09:39
finally后执行,覆盖了。
作者:
Ice丶wj
时间:
2014-6-2 10:00
可以这样理解finally必须执行,return1并没有结束函数,所以1没有被返回,在执行完finally后才返回
试试:
class T
{
public static void main(String[] args)
{
System.out.println(test());
}
public static int test()
{
try
{
//System.exit(0);
return 1;
}
finally
{
System.out.println("haha");
}
}
}
作者:
姿_`态
时间:
2014-6-2 10:01
try catch 语句块是对异常的处理 ,这里没有异常,所以你可以忽略他们直接看代码,首先是return 1,返回了一个常量1,然后是finally语句,一般finally语句是和try catch 语句块一起使用的,他的目的是使finally语句块中的内容一定会被执行,因为有时候你需要被执行的代码由于异常的原因无法执行到,finally 是一个保证。他是有些语句一定会被执行到,所以这时候 执行了finally 语句块 return 2 。这时候返回的常量2,覆盖了 常量1 。所以输出的是2而不是1.
作者:
上杉
时间:
2014-6-2 10:38
看看,学习学习......
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2