Java關鍵字如下:
| abstract |
default |
if |
private |
this |
| boolean |
do |
implements |
protected |
throw |
| break |
double |
import |
public |
throws |
| byte |
else |
instanceof |
return |
transient |
| case |
extends |
int |
short |
try |
| catch |
final |
interface |
static |
void |
| char |
finally |
long |
strictfp |
volatile |
| class |
float |
native |
super |
while |
| const |
for |
new |
switch |
|
| continue |
goto |
package |
synchronized |
|
以上是java specifications中定義的keywords,一共48個,其中常見的三個看似是關鍵字的true, false, null,都不是關鍵字,而是作為一個單獨標識類型。
其中,不常用到的關鍵字有:const,goto,native,strictfp,transient,volatile。
const和goto為java中的保留字。
native
簡單地講,一個Native Method就是一個java調用非java代碼的介面。一個Native Method是這樣一個java的方法:該方法的實現由非java語言實現,比如C。這個特徵並非java所特有,很多其它的程式設計語言都有這一機制,比如在C++中,你可以用extern "C"告知C++編譯器去調用一個C的函數。
標識符native可以與所有其它的java標識符連用,但是abstract除外。這是合理的,因為native暗示這些方法是有實現體的,只不過這些實現體是非java的,但是abstract卻顯然的指明這些方法無實現體。
strictfp
strictfp, 即 strict float point (精確浮點)。
strictfp 關鍵字可應用於類、介面或方法。使用 strictfp 關鍵字聲明一個方法時,該方法中所有的float和double運算式都嚴格遵守FP-strict的限制,符合IEEE-754規範。當對一個類或介面使用 strictfp 關鍵字時,該類中的所有代碼,包括巢狀型別中的初始設定值和代碼,都將嚴格地進行計算。嚴格約束意味著所有運算式的結果都必須是 IEEE 754 演算法對運算元預期的結果,以單精確度和雙精確度格式表示。
如果你想讓你的浮點運算更加精確,而且不會因為不同的硬體平台所執行的結果不一致的話,可以用關鍵字strictfp。
transient
變數修飾符,如果用transient聲明一個執行個體變數,當Object Storage Service時,它的值不需要維持。
Java的serialization提供了一種持久化對象執行個體的機制。當持久化對象時,可能有一個特殊的對象資料成員,我們不想用serialization機制來儲存它。為了在一個特定對象的一個域上關閉serialization,可以在這個域前加上關鍵字transient。當一個對象被序列化的時候,transient型變數的值不包括在序列化的表示中,然而非transient型的變數是被包括進去的。
volatile
就象大家更熟悉的const一樣,volatile是一個類型修飾符(type specifier)。它是被設計用來修飾被不同線程訪問和修改的變數。如果沒有volatile,基本上會導致這樣的結果:要麼無法編寫多線程程式,要麼編譯器失去大量最佳化的機會。
final
final可以修飾非抽象變數,非抽象方法,非抽象類別
final修飾的類:
- final類不能被繼承
- final類中的變數和方法預設是final的
final修飾的變數:
- final變數即常量,不可被賦值
- final變數(如果不是private的)可以被繼承
final修飾的方法:
- final方法(如果不是private的)可以被繼承
- final方法不可以被複寫
(private方法預設是final的,因為private方法不可以被繼承,不可以被複寫。但是你可以對private方法增加final修飾符,但是這並沒有意義)
static
static是在記憶體中分配一塊地區,供整個類使用。也就是說,不管這個類有多少個執行個體,這些執行個體的static類型的變數都是共用的。
static定義的變數和方法也可以直接通過類來調用,不需要通過類的一個執行個體來調用。
static可以修飾變數,方法,代碼塊,類。(static修飾類比較特殊,static不可以修飾外部類,只可以修飾內部類)