黑马程序员技术交流社区
标题:
代码执行的结果是为什么?
[打印本页]
作者:
H-Deka
时间:
2014-3-27 18:09
标题:
代码执行的结果是为什么?
本帖最后由 H-Deka 于 2014-3-28 10:29 编辑
结果为什么是55,try中的return不是代表结束了吗?
public class Test
{
public static void main(String args[])
{
Test t = new Test();
int b = t.get();
System.out.println(b);
}
public int get()
{
try
{
return 33 ;
}
finally
{
return 55 ;
}
}
}
作者:
宋超2356
时间:
2014-3-27 18:22
public class Test
{
public static void main(String args[])
{
Test t = new Test();
int b = t.get(); //这里拿到的必然是最后return的55
System.out.println(b);
}
public int get()
{
try
{
return 33 ;
}
finally //所谓finally就是无论前面是否执行,finally的方法一定是会执行的,从单词词义也看的出
{
return 55 ;
}
}
}
复制代码
注释了,看下
作者:
阳春烟景
时间:
2014-3-27 18:30
楼主要是不明白的话,可以做个测试。。
在try中写了return,后面又写了finally,
* 是先执行return还是先执行fianlly?
* @author hjl
*
*答:是先执行return
public class test6 {
public static int test(){
try {
return function1();
}finally{
return function2();
}
}
public static int function1(){
System.out.println("function1执行了");
return 1;
}
public static int function2(){
System.out.println("function2执行了");
return 2;
}
public static void main(String[] args){
System.out.println(new test6().test());
}
}
复制代码
作者:
xuehuayous
时间:
2014-3-27 18:49
代码的执行过程分析:
package cn.itcast;
public class Test{
public static void main(String args[]) {
Test t = new Test();
int b = t.get(); //step1:对象t调用get()方法,
//step4:将返回值55赋给b;
System.out.println(b);//step5:将b的值55打印到控制台;
}
public int get() {
try {
return 33 ;//step2:执行try{}内的return33;
}
finally {
return 55 ;//step3:执行finally{}内的return55;
}
}
}
复制代码
所以结果是55,希望对你有帮助!
作者:
钟成军
时间:
2014-3-27 18:51
finally里里的语句一定会执行,除非在try中有语句 System.exit(0); 所以返回的语句肯定是55了
作者:
╰青青子佩ˊゝ
时间:
2014-3-27 20:47
因为finally内的代码一定会被执行,那么返回的便是55
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2