public class Abc {
public static int test(){
int i=9;
try{
return i;
}finally{
i=10;
}
}
public static StringBuffer test1(){
StringBuffer i=new StringBuffer(9);
//注意StringBuffer(int i)是构造一个指定容量的StringBuffer变量;
try{
return i;
}finally{
i.append(10);
//append(int i) 将 int 参数的字符串表示形式追加到此序列。
i=null;
}
}
public static void main(String[] arg){
System.out.println(test());
System.out.println(test1());
}
}
//答案:9,10
//Java 的异常处理模型中,
//finally 块区域中的代码都是不能够通过重新赋值的方式来改变 try 区域中 return 语句的返回值。
//所以i的返回值是不变的,当i是int型的数据时,返回值就是其本身;
//当i是类类型的变量时,返回值是对象的引用(相当于指针),所以i.append(10)能发挥作用!
//而i=null相当于改变i的引用(指针),让其指向一个空值,所在finally语句中并不被执行!