//1.try{}里有return,finally{}里的code会不会被执行?在return前执行还是return后?
public class HelloWorld {
public static void main(String []args) {
System.out.println(new HelloWorld().test());
}
static int test(){
int x = 1;
System.out.println("try里面的x : " + x);
try{
System.out.println("try里面的x : " + x);
return x;
}
finally{
System.out.println("enter finally...");
++x;
System.out.println("fianlly里面的i : " + i);
}
}
}
//执行结果
/*try里面的x : 1
enter finally...
fianlly里面的i :
1 **/
总结:总的来说应该是在return中间执行的,return数据先放入一个函数栈中,等执行结束之后才真正的返回
//2.try{}里有return,finally{}里的return执行顺序
try{
return 1;
}
finally{
return 2;
}
//执行结果:2
总结:先调用try里的return放置于函数栈中,然后再执行finally。
//3.finally{}里的code和return执行顺序
try{
return func1();
}
finally{
return func2();
}
int func1(){
System.out.println("func1 ");
return 1;
}
int func2(){
System.out.println("func2 ");
return 2;
}
//执行结果
func1
func2
2
总结:finally里的代码比return和break语句后执行
PS: final、finally 和 finalize的区别?
final属于声明属性,方法和类,表示属性不可变、方法不可覆盖、类不可继承,内部类要访问局部变量必须将局部变量定义成final;
finally是异常处理语句的一部分;
fianlize则是object类的一个方法。
浙公网安备 33010602011771号