Final
??若final修飾變量,那么該變量則無法再被賦值;若是final修飾的類,那么該類則無法派生出新的子類,同時也無法作為父類被繼承;若final定義了一個方法 ;那么該方法不能被重載和覆蓋。final關(guān)鍵字特點大致如上,其余不做贅述。
finally
??finally通常用于try catch語句塊中,完整的異常處理語句一般都有finally語句。無論有無異常發(fā)生,finally語句一定會被執(zhí)行。
今天在牛客網(wǎng)上看到一道題如下:
public class Demo{
public static void main(String arg[]){
System.out.println(getNumber(0));
System.out.println(getNumber(1));
System.out.println(getNumber(2));
System.out.println(getNumber(4));
}
public static int getNumber(int num){
try{
int result=2/num;
return result;
}catch(Exception exception){
return 0;
}finally{
if(num==0){
return -1;
}
if(num==1){
return 1;
}
}
}
}
答案為-1110.
return的作用是返回一個值并跳出該段代碼,然而finally是在try-catch中必定會執(zhí)行的語句塊。然而如果在finally中使用return,那么return會覆蓋try-catch中的return。補充一點,若finally中使用了throw語句,那么try-catch重throw也同樣失效。
至于答案最后一個0,因為2/4=0.5,而結(jié)果應(yīng)該為int型,所以丟失精度,返回為0。