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。

上一篇 下一篇

猜你喜欢

热点阅读