1、final 關鍵字
(1) 修飾成員變量:
對於基本類型:
final 使數值不變,也就是不能被修改,同時必須賦初始值,只能被初始化一次。
(1) 單獨一個 final 關鍵字修飾基本數據類型時,可以有兩種方式賦初始值。
i. 聲明時直接賦初始值
ii. 使用構造函數賦初始值
(2) 和 static 一起修飾基本數據類型時,則只能通過聲明時賦初值。
對於引用類型:
final 使引用不變,也就是說不能將其它對象引用賦值給它了,但是被引用的對象本身是可以修改的。
(2)修飾方法:
被修飾的的方法不能被子類覆蓋(重寫)。
private 方法隱式的被指定爲 final,也就是說 private 修飾的方法也不能被子類覆蓋(但是如果在子類中定義的方法和基類中的方法簽名相同,這個不屬於覆蓋)。
(3)修飾類:
被修飾的類不能被繼承。
2、static 關鍵字
(1)靜態變量:
靜態變量在內存中只存在一份,在類第一次加載時初始化一次。類的所有實例都共享靜態變量,直接通過類名來訪問。
(2)靜態方法
類加載時就存在了,不依賴於任何一個實例,靜態方法不能是抽象類型的,必要要有實現
(3)靜態語句塊
靜態語句塊和靜態變量一樣在類第一次加載時運行一次。
(4)初始化順序
靜態數據優先於其他數據的初始化,靜態數據 和 靜態語句塊 誰先運行取決於他們在代碼中的位置。
實例變量和普通語句塊的初始化在 靜態數據 和 靜態語句塊 之後完成初始化
最後是構造函數中的數據進行初始化
3、native 關鍵字
Java 中,native 關鍵字修飾的函數聲明表明該方法的實現不是由 Java 完成的,而是由 C/C++ 實現的,並被編譯成了 .dll ,由 Java 調用。
4、transient 關鍵字
transient 只能修飾變量,不能修飾方法和類;
使用了此關鍵字之後,對象序列化的時候會自動過濾被此關鍵字修飾的變量;
靜態變量不管是否有 transient 修飾,都不能被序列化;
5. instanceof 關鍵字
測試一個對象是否是一個類的實例,用法:
boolean result = obj instanceof Class
obj 是一個對象(obj 必須是引用類型,不能是基本類型,否則編譯不通過),Class 表示一個類或者一個接口,當 obj 爲 Class 的對象,或者是其直接、間接子類、或是其接口的實現類時,返回 true,否則返回 false。