今天碰到了這樣一個問題;使用try,return和finally會碰到的各類狀況
1,try中有return時,執行順序;
2,try和finally中都有return時,執行順序;
3,運算代碼在finally中,try中return返回值時的執行順序;
代碼:
public class tryfinally {
static int i=0;
public static void main(String[] args) {
int value=getValue1();
System.out.println(value);
System.out.println(getValue());
System.out.println(getValue1());
System.out.println(getValue2());
System.out.println(getValue3());
}
@SuppressWarnings("finally")
public static boolean getValue(){
try{
return true;
}finally{
return false;
}
}
@SuppressWarnings("finally")
public static int getValue1(){
try{
return i;
}finally{
i++;
System.out.println(i);
}
}
@SuppressWarnings("finally")
public static int getValue2(){
int y=0;
try{
return y;
}finally{
y++;
System.out.println(y);
}
}
}
@SuppressWarnings("finally")
public static int getValue3(){
int z=0;
try{
return z;
}finally{
z++;
}
}
結果:false
1
0
1
0
1
0
0
個人結論:代碼按順序執行,有多個return時返回的同一個值時後者覆蓋前者。get