參考:
作者博客:http://www.cnblogs.com/dolphin0520
總結得超好!!!
淺析Java中的final關鍵字
http://www.importnew.com/18586.html
Java中的static關鍵字解析
http://www.cnblogs.com/dolphin0520/p/3799052.html
static 關鍵字
static 修飾的變量或方法時對象的對於它的各個實例的共有財產,
而且不用實例化就可以直接引用。
可以在實例方法可以使用靜態方法,靜態方法或者 static塊 中不能引用實例變量或者方法(因爲靜態方法時共有的,如果特定實例的東西進去了,這個特性就不能保證了,矛盾了;static 塊,則是因爲它只在類加載的時候執行一次,這種特性也可用於在創建對象的過程中優化策略)。
final 關鍵字
final 類不可修改,不可繼承擴展(此時該類的方法默認爲 final 類型)
在使用final修飾類的時候,要注意謹慎選擇,除非這個類真的在以後不會用來繼承或者出於安全的考慮,儘量不要將類設計爲final類
final 方法
因此,如果只有在想明確禁止 該方法在子類中被覆蓋的情況下才將方法設置爲final的。
注:類的private方法會隱式地被指定爲final方法。
final 變量
對於一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之後便不能更改;如果是引用類型的變量,則在對其初始化之後便不能再讓其指向另一個對象。
final 變量的編譯時特性
當final變量是基本數據類型以及String類型時,如果在編譯期間能知道它的確切值,則編譯器會把它當做編譯期常量使用。