public static int test2() {
int a = 1;
try{
return a;
} catch ( Exception e ) {
} finally {
a = 2;
System.out.println("do finally");
}
return a;
} //很显然,finally里面更改无效,返回的是a=1
public static int test2_1() {
int a = 1;
try{
return a;
} catch ( Exception e ) {
} finally {
a = 2;
System.out.println("do finally");
return a;
}
} //很显然,a取finally里面的值,a=2
//Helper类,将整数转换成字符串
static class Helper {
int a;
public String toString() {
return String.valueOf(a);
}
}
public static Helper test3() {
h.a = 1;
try{
return h;
} catch ( Exception e ) {
} finally {
h.a = 2; //对h.a的更改起作用!!
//因为在try里面返回的是一个句柄,它指向的对象的内容 是可以改变的
System.out.println("do finally");
}
return h; //这个不会被执行
}
public static Helper test3_1() {
Helper h = new Helper();
h.a = 1;
try{
return h;
} catch ( Exception e ) {
} finally {
h.a = 2; //返回a=2,这个不用说了
System.out.println("do finally");
return h;
}
}
/**
* 总结:
* return语句,finally里面不建议放return语句,根据需要,可以放在try和catch里面
*
*/
}