黑马程序员技术交流社区
标题:
今天看视频,遇到几个问题啊!(已解决)
[打印本页]
作者:
戎石锁
时间:
2012-8-3 20:04
标题:
今天看视频,遇到几个问题啊!(已解决)
本帖最后由 戎石锁问枫 于 2012-8-4 22:22 编辑
1、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
2、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
作者:
王龙彪
时间:
2012-8-3 20:07
1, finally{}里的code先执行,然后执行try{}里有一个return语句
2, 匿名内部类可以继承类和接口的
作者:
王志明
时间:
2012-8-3 21:01
本帖最后由 王志明 于 2012-8-3 21:04 编辑
1.finally里面的code会执行的,在return之前执行,但是如果在执行finally之前执行System.exit(0)的话,finally就不会被执行到了
2. 匿名内部类本身就是继承了其它类或实现了其它接口,要是在这基础再继承或实现,好像语法上不能这么写吧
作者:
戎石锁
时间:
2012-8-3 21:28
谢谢 问题已解决
作者:
包晗
时间:
2012-8-3 22:44
非真实姓名注册论坛用户ID提问,解决问题,不提供任何技术分加分。(非真实姓名发帖,版主和管理人员有权直接关闭贴)
申请论坛改名地址:
http://bbs.itheima.com/thread-19719-1-1.html
如果姓名已经有人注册
例如:王鹏 这个ID被注册了,那么你可以改成“黑马-王鹏”“黑马粉-王鹏”“黑马_王鹏”“黑马王鹏”都是可以的!
作者:
李知伦
时间:
2012-8-4 02:22
本帖最后由 李知伦 于 2012-8-4 02:29 编辑
1、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
答:会,之后
我觉得如果你把题目中的return理解返回值,答案就是"之前";如果理解成代码,语句,就是之后
不管怎样这里的finally肯定会被执行
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("返回值:"+new Test().tt());;
}
static int tt() {
int x = 1;
try {
return Return();
}
finally {
++x;
System.out.println("finally块执行,x="+x);
//如果try与finally中都有return语句,返回值以finally的为准,返回值为2
//return x;
}
}
static int Return(){
System.out.println("return执行");
return 1;
}
}
复制代码
运行结果:
return执行
finally块执行,x=2
返回值:1
作者:
王程
时间:
2012-8-4 09:41
在try-finally语句中,只要不是进程被强行杀掉,遇到System.exit(0)语句,finally中的内容一定是要执行的。如果try中有return语句,它和finally哪个先执行的问题,下面用代码说明
class Test2
{
public int value = 1;
}
public class Test1
{
public static void main(String[] args)
{
System.out.println(Func2().value);
}
public static Test2 Func2()
{
Test2 t = new Test2();
try
{
return t;
}
finally
{
t.value++;
}
}
}
复制代码
运行结果为2,可以看出JVM是先运行了finally中的代码,然后在运行try中的return
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2