try和finally中的return
来源:互联网 发布:网络吃饼干是什么意思 编辑:程序博客网 时间:2024/04/30 21:36
finally一定会执行吗?回答当然是否定的,假如在try里执行了System.exit(0)就不会再去执行finally了,守护线程中的finally碰到非守护线程全部退出的时候也可能执行不到。
又如下面的代码,会打印什么内容?
public
class
Test {
public
static
void
main(String... args) {
System.out.println(getValue1());
System.out.println(getValue2());
}
public
static
int
getValue1() {
int
i1 =
0
;
int
i2 =
1
;
try
{
return
i1;
}
finally
{
return
i2;
}
}
public
static
int
getValue2() {
int
i =
1
;
try
{
return
i;
}
finally
{
i++;
}
}
}
jad反编译感觉看着也不错。
public class Test
{
public Test()
{
}
public static transient void main(String args[])
{
System.out.println(getValue1());
System.out.println(getValue2());
}
public static int getValue1()
{
boolean flag;
int i;
flag = false;
i = 1;
boolean flag1 = flag;
return i;
Exception exception;
exception;
return i;
}
如果finally和try里都有执行了return,try里的return的值会被废弃。
public static int getValue2()
{
int i = 1;
int j = i;
i++;
return j;
Exception exception;
exception;
i++;
throw exception;
}
}
在try里返回值会先存到一个临时变量中,finally里改变的是原始变量,改完之后再将临时变量的值返回,也就是说在finally里改变返回值变量并不影响返回值本身。
如果返回值是对象,在try里边return,然后在finally中对这个对象的成员进行修改的,修改的结果会反馈到返回值中。
0 0
- try和finally中的return
- java中try 和 finally中的return
- try...catch...finally中的return
- try中的return与finally
- Python中的try, finally, return
- try...catch...finally中的return
- try finally中的return问题
- 【笔试】try{}finally{}中的return
- try catch finally 和return
- try{}中return和finally{}
- try-catche-finally和return
- try...catch...finally中的执行顺序和return语句 总结
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return
- 抗生素是否可以治疗咽炎
- INNODB 重要优化设置【解决慢卡的问题】
- 简单工厂模式详解
- 第6周项目5复数模板类
- windows下apache如何完整卸载
- try和finally中的return
- 设计模式之访问者
- 样式属性
- 第六周项目一 深复制体验3
- 耳膜穿孔案例
- Android知识点记录(1)
- 如何使用Log4j
- OpenCV3.0安装教程 Mac10.10+Xcode6.3
- STM32 USB_DFU升级APP程序