final、finally、finalize區別
阿新 • • 發佈:2018-10-30
span class ati 線程 共享變量 exit 共享 tro 區別 final:
final關鍵字 簡要說一下final關鍵字,final可以用來修飾什麽
final在類上表示該類不可繼承
final在方法上表示該方法不可被繼承重寫
final在變量上表示該變量初始化後不可修改
好處:提高了性能,因為系統在初始化時候就加載了該變量,final在多線程下可以安全的共享變量
finally:
用於try/catch語句中,一般一定會執行的代碼塊,常用於釋放資源
例如:
public static void main(String[] args) { System.out.println(test(null)); System.out.println(test("0")); System.out.println(test("a11")); } public static Integer test(String str) { try { return str.charAt(0) - ‘0‘; } catch (NullPointerException e1) { System.out.println(11); return 1; } catch (StringIndexOutOfBoundsException e2) {return 2; }catch (Exception e3) { return 3; }finally{ System.out.println(4);//這個一定會在return之前執行 // return 4;//這個return會頂替掉前面的其它return } }
執行結果:
11 4 1 ---------- 4 0 ---------- 4 49
解釋:finally一般一定會在返回之前執行(也有特殊情況,比如中斷程序System.exit(0) ),一般用於釋放資源
finalize:
定義在java.lang.Object中,所以每個對象都有,它在gc啟動,該對象被回收時調用。
final、finally、finalize區別