关于java中的try-catch-finally语句和return(二)

2014-11-24 09:09:53 · 作者: · 浏览: 1
}

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() {
Helper h = new Helper();
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里面
*
*/

}