Java中的final、finally关键字用法汇总
2018-05-20 本文已影响0人
残风碎雨
Final
若final修饰变量,那么该变量则无法再被赋值;若是final修饰的类,那么该类则无法派生出新的子类,同时也无法作为父类被继承;若final定义了一个方法 ;那么该方法不能被重载和覆盖。final关键字特点大致如上,其余不做赘述。
finally
finally通常用于try catch语句块中,完整的异常处理语句一般都有finally语句。无论有无异常发生,finally语句一定会被执行。
今天在牛客网上看到一道题如下:
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中必定会执行的语句块。然而如果在finally中使用return,那么return会覆盖try-catch中的return。补充一点,若finally中使用了throw语句,那么try-catch重throw也同样失效。
至于答案最后一个0,因为2/4=0.5,而结果应该为int型,所以丢失精度,返回为0。