一、性質不同
(1)final為關鍵字;
(2)finalize()為方法;
(3)finally為為區塊標誌,用於try語句中;
二、作用
(1)final為用於標識常量的關鍵字,final標識的關鍵字儲存在常量池中(在這裡final常量的具體用法將在下面進行介紹);
(2)finalize()方法在Object中進行了定義,用於在物件“消失”時,由JVM進行呼叫用於對物件進行垃圾回收,類似於C++中的解構函式;使用者自定義時,用於釋放物件佔用的資源(比如進行I/0操作);
(3)finally{}用於標識程式碼塊,與try{}進行配合,不論try中的程式碼執行完或沒有執行完(這裡指有異常),該程式碼塊之中的程式必定會進行;
三、final詳解
1定義變數
1.1 final定義基本型別變數時,要求變數初始化必須在宣告時或者建構函式中,不能用於其它地方。該關鍵字定義的常量,除了初始化階段,不能更改常量的值。
1.2 final定義物件的引用,該引用的初始化與定義常量時的要求一致;該關鍵字定義的物件內容可以改變,但是引用指向的地址不能改變;
2定義引數
如果傳入該引數定義的變數時,方法不能對該引數內容進行修改(錯誤),與定義變數的修改規則相同;java方法中傳遞基本型別時是傳值的,java方法對於物件的傳遞是傳參的;
<歸根結底,java中方法的傳遞是依靠傳遞“副本”:對於基本型別,首先建立一個Copy,並將傳入的值賦值給Copy,然後對Copy進行操作;對於物件型別,首先建立一個引用Copy,並將傳入的物件引用賦值給Copy>
比如:method(final int test);
有些書上說,這裡final定義引數,尤其是物件的引數很有作用,不能在方法內對於物件的內容進行改變,這樣的說法是錯誤的!原來我也認為這樣有些函數語言程式設計的特點,不能對於物件的內容進行修改該,這裡依舊可以對物件的內容進行修改。
??定義該引數有什麼用??
String天生就是final型別的!
3定義方法
(1)使用final關鍵字定義的方法,不能被子類繼承;
(2)允許編譯器將所有對此方法的呼叫轉化為inline(行內)行為,即可以將此方法直接複製在呼叫處,而不是進行例行的方法呼叫(儲存斷點、壓 棧),這樣會使程式的效率升高。但是---------如果過多的話,這樣會造成程式碼膨脹,反而會影響效率,所以該方法要慎用。。
4定義類
一個任何final類無法被任何人繼承,這也就意味著此類在一個繼承樹中是一個葉子類,並且此類被認為是很完美的,不需要進行任何修改(總之是不推薦使用)
Java之final、finalize、finally的區別
相關文章
- Java中final、finally、finalize的區別Java
- Java中final,finally,finalize的區別Java
- final、finally、finalize()的區別(skycto JEEditor)
- 【Java面試題系列】:Java中final finally finalize的區別Java面試題
- final:finalize:finally:
- final,finalize,finally的不同之處
- final、finally、finalize的理解
- 徹底區分final.finalize,finally
- 【java】final、finally、finallize的區別Java
- 異常-面試題之final,finally和finalize的區別,如果在finally之前有return面試題
- 『Java 語法基礎』final、finalize 和 finally 的不同之處Java
- final、finally、finalize的詳細分析
- final,finally,finallize的區別
- final和finalize
- 看完這篇 final、finally 和 finalize 和麵試官扯皮就沒問題了
- final修飾和static final修飾的區別
- Java入門系列之finalJava
- Java 關鍵字之 finalJava
- Java之InetSocketAddress和SocketAddress的區別Java
- Java之.class和.getClass()的區別Java
- Java之for(;;)和while(true)的區別JavaWhile
- Java之String的equals與contentEquals區別Java
- final與static關鍵字的區別?(skycto JEEditor)
- java exception and finally returnJavaException
- [Java基礎]FinallyJava
- Java之try-catch和throws的區別Java
- java複習之HashMap和Hashtable的區別JavaHashMap
- JAVA finalJava
- java複習之 Vector、ArrayList和LinkedList 的區別Java
- Java趣味分享:try/finallyJava
- java中的Static、final、Static final各種用法Java
- java,javac,java -version的區別Java
- Java try catch finally 總結Java
- Flutter 知識梳理 (Dart) - Dart 中 static, final, const 區別FlutterDart
- JAVA之編譯期和執行期區別Java編譯
- 【Java】equals 和 == 的區別Java
- Java中Statement與PreparedStatement與CallableStatement之間的區別 - javarevisitedJava
- 探究final在java中的作用Java
- C++11新特性之final override識別符號C++IDE符號