final關鍵字:
1、final修飾的類不可以被繼承;final修飾的方法不可以被重寫;final修飾的變量不可以被修改;
好處:1、為方法上鎖,當定義方法不想被子類修改時可以采取此辦法;
2、提高執行效率,編譯器加載內嵌機制;
static關鍵字:
1、static方法:
1、只能調用其他的static方法
2、只能使用static變量
3、不能以任何方式引用this或者super關鍵字
(因為靜態方法在編譯時,最先被加載,所以有他的優勢 以及 一定的局限性)
static常常在應用開發中提供一些實用工具類
static 靜態也就是全局的意思,其不與具體對象相關直接由類名直接調用
一般定義static方法時,都用private修飾,其他類不可以修改和直接實用;
static變量
按照是否靜態的對類成員變量進行分類可分兩種:一種是被static修飾的變量,叫靜態變量或類變量;另一種是沒有被static修飾的變量,叫實例變量。兩者的區別是:對於靜態變量在內存中只有一個拷貝(節省內存),JVM只為靜態分配一次內存,在加載類的過程中完成靜態變量的內存分配,可用類名直接訪問(方便),當然也可以通過對象來訪問(但是這是不推薦的)。對於實例變量,沒創建一個實例,就會為實例變量分配一次內存,實例變量可以在內存中有多個拷貝,互不影響(靈活)。
static方法
靜態方法可以直接通過類名調用,任何的實例也都可以調用,因此靜態方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變量和實例方法 (就是不帶static的成員變量和成員成員方法),只能訪問所屬類的靜態成員變量和成員方法。因為實例成員與特定的對關聯!這個需要去理解,想明白其中的道理,不是記憶!!!
因為static方法獨立於任何實例,因此static方法必須被實現,而不能是抽象的abstract。
當final和static同時使用時,相當於全局常量;