在我們認識Java中的標示符的時候,知道了標示符的定義規則里有一條:
Java自身提供的49個關鍵字不能作為標示符定義。
那么,所謂的關鍵字是什么呢?關鍵字實際上是Java中的特殊保留字。
值得留意的就是特殊與保留兩個字。為什么呢?因為通俗的來說,所謂的關鍵字事實上我們也可以理解為標示符存在,
只不過這種標示符因為Java自身為其賦予了特殊的意義,所以作為Java自身所保留的標示符存在。
自然的,我們也就不能再單獨的使用這些標示符作為自定義的標示符。
我們同樣可以結合實際生活中的例子來幫助我們更形象的理解關鍵字的概念。
就如同我們在認識標示符時提到的概念一樣。我們可以將我們自己的姓名視作是我們自身的“標示符”。
只要符合中國的取名規范,我們可以用不同的漢字組成我們自己特有的姓名。
但是,如今可能沒有人會使用“北京”,“毛澤東”來作為姓名了吧。(當然只是舉個例子,我也不知道是不是法律規定不能以這些作為名字)
其原因就是因為,這些類似的“標示符”在發展過程中,已經有了人們共識,特殊的意義。
當談論起“北京”,人們都認為是在談論中國的首都,可能沒有人能意識到這是你的名字。
同理的,Java中的關鍵字已經被賦予了特殊的意義,如果你使用這些關鍵字作為自己的標示符。
那么,Java的編譯器在執行編譯工作時,它只會識別其本身代表的含義;并不能了解你自定義的意義;這樣就會造成混淆,從而編譯失敗。
Java中的關鍵字共有49個,下面就讓我們對這個49個不同的關鍵字,通過其“功能性”對其進行一個分類,從而分別了解它們的作用。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
**訪問修飾符關鍵字**
在具體的了解不同的訪問修飾符關鍵字的作用之前,我們首先應當知道什么是訪問修飾符。
所謂的訪問修飾符,簡單來說就是指:用于對成員的訪問權限的限定的修飾符。那么,接下來就讓我們看一看Java中具體有哪些不同的訪問修飾符。****
- public?? :公共訪問修飾符
- private? :私有訪問修飾符
- protected:受保護訪問修飾符
除此之外,實際還有另一種訪問權限:
friendly :默認訪問修飾符(不書寫任何訪問修飾符關鍵字的形式,friendly自身不是訪問修飾符,因為這種訪問權限下,只有當前類和同一包中的類可以訪問,所以這種訪問權限又被稱為包訪問權限)

除此之外,值得注意的就是:其余幾種訪問修飾符都可以修飾任何成員,但是在Java中,類只能被聲明為public或者默認訪問權限。
**類、方法和變量修飾符關鍵字**
- abstract???? :抽象修飾符。該修飾符修飾一個類時,代表此類為一個抽象,該類不能被實例化。修飾一個方法時,代表該方法為抽象方法,該方法必須被子類實現。
- class??????? :定義類的關鍵字。
- extends????? :用于指出子類所擴展的父類的關鍵字。
- final??????? :此關鍵字修飾的成員:類不能被繼承,方法不能被覆寫,變量不能被重新初始化。
- implements?? :用于指出類所實現的接口的關鍵字。
- interface??? :定義接口的關鍵字。
- native?????? :該關鍵字修飾的方法意為一個本地方法,代表該方法是用于平臺相關的語言(如C)實現的。
- new????????? :通過該關鍵字調用構造函數實例化一個對象。
- static?????? :靜態修飾符,被該關鍵字修飾的成員屬于一個類,而不屬于對象(實例)。
- strictfp???? :用于修飾類或方法,指出此類或方法中的所有表達式中的浮點數將嚴格遵循FP限制規則。
- synchronized :同步修飾符。用于多線程中,被修飾的方法或代碼塊同時只能被一個線程所訪問。
- transient??? :瞬態修飾符。常用于修飾關聯IO流操作的變量,代表防止被修飾的變量串行化。(舉例來說,例如使用一個輸出流將一個對象串行化輸出到一個外部文件時,被該修飾符修飾的變量的值將不會被串行化輸出到外部文件當中)
- volatile???? :指出變量可能改變,失去同步,因為它被用在多個線程當中。
**流程控制關鍵字**
- break???? :從其所在的代碼塊中退出
- continue? :停止循環內該語句后其余代碼的執行,立馬開始該循環的下一次循環。
- case?????:根據switch測試結果執行某個代碼塊
- default?? :如果條件與swicth語句中任何一個case都不匹配,則執行這個代碼塊中的內容。
- do??????? :先執行一次該代碼塊,之后再與while語句結合,判斷是否應該再次執行該代碼塊。
- else????? :如果if運算結果為false,則執行該代碼塊中的內容
- for?????? :為代碼塊執行條件判斷
- if??????? :執行邏輯判斷,判斷結果為true則執行該代碼塊中的內容。
- Instanceof:確定對象是否是一個類、子類或接口的實例
- return??? :從方法返回
- switch??? :指出與case語句比較的變量
- while????:當某個條件為true時,重復的執行該代碼塊。
**錯誤處理關鍵字**
- catch? :聲明用于捕獲處理異常的代碼塊
- finally:該關鍵字修飾的代碼塊通常跟在try-catch或try之后,意味當帶有異常處理時,程序流程如何,最終都將執行這個代碼塊中的內容
- throw? :把異常向上傳遞到調用該方法的方法。
- throws :指出該方法將可能存在異常
- try??? :聲明將要執行單可能引發異常的代碼塊
- assert :斷言。計算條件表達式,以驗程序員的假設。
**包控制關鍵字**
- import :把包或類導入到代碼中
- package:指出當前類屬于哪個包
**基本數據類型關鍵字**
- boolean:布爾數據類型
- byte:字節數據類型
- char:字符數據類型
- short:短整型數據類型
- int:整型數據類型
- long:長整型數據類型
- float:單精度浮點數據類型
- double:雙精度浮點數據類型
**變量關鍵字**
- super:引用直接父類的引用變量
- this:引用當前對象的實例的引用變量
**空返回類型關鍵字**
- void:指出方法沒有任何返回類型
**
**
**未使用的保留字**
- goto
- const
以上就是Java中所有的49個關鍵字,我們會在實際應用中頻繁的接觸當中大部分的關鍵字,也有一小部分是實際開發中較少用到的。
我們可以通過實際開發更好的理解各個關鍵字的用法與效果,但必須要記住的就是:不要將這些關鍵字用作自定義的標示符。
- 前言
- 第一個專欄《重走J2SE之路》,你是否和我有一樣的困擾?
- 磨刀不誤砍材工 - 環境搭建(為什么要配置環境變量)
- 磨刀不誤砍材工 - Java的基礎語言要素(定義良好的標示符)
- 磨刀不誤砍材工 - Java的基礎語言要素(關鍵字)
- 磨刀不誤砍材工 - Java的基礎語言要素(注釋-生成你自己的API說明文檔)
- 磨刀不誤砍材工 - Java的基礎語言要素(從變量/常量切入,看8種基本數據類型)
- 磨刀不誤砍材工 - Java的基礎語言要素(運算符和表達式的應用)
- 磨刀不誤砍材工 - Java的基礎語言要素(語句-深入理解)
- 磨刀不誤砍材工 - Java的基礎語言要素(數組)
- 換一個視角看事務 - 用"Java語言"寫"作文"
- 牛刀小試 - 淺析Java的繼承與動態綁定
- 牛刀小試 - 詳解Java中的接口與內部類的使用
- 牛刀小試 - 趣談Java中的異常處理
- 牛刀小試 - 詳解Java多線程
- 牛刀小試 - 淺析Java集合框架的使用
- 牛刀小試 - Java泛型程序設計
- 牛刀小試 - 詳細總結Java-IO流的使用