try、finally子句中变量在return 中的返回情况
1. finally子句将会覆盖try语句块中的return
public static void main(String[] args) {
System.out.println(test());
}
static int test(){
try {
return 3;
}finally {
return 5;
}
}
2. 变量传递–基本数据类型和不可变对象都不会影响返回值
public static void main(String[] args) {
System.out.println(test());
}
static int test(){
int i = 8;
try {
i++;
return i;
}finally {
i=10;
}
}
注:上面的int 换成String、Interger 等不可变对象,返回的都是try语句块中的值,finally子句的变量更改操作不会对其产生影响
3. 变量传递–可变对象,会改变值
public static void main(String[] args) {
System.out.println(Arrays.toString(test()));
}
static int[] test(){
int[] i={1,2,3};
try {
return i;
}finally {
i[2]=6;
}
}
|