Java程式設計基礎--關鍵字【知識體系構建系列】
Java關鍵詞統一認識下,正視Java基礎。
關鍵詞一覽表
訪問控制類 | private | protected | public | ||||
類、方法和變數修飾符 | abstract | class | interface | implements | extends | final | native |
new | static | strictfp | synchronized | transient | volatile | ||
程式控制語句 | break | case | continue | default | do | else | for |
if | instanceof | return | switch | while | |||
錯誤處理 | assert | catch | finally | throw | throws | try | |
包相關 | import | package | |||||
基本型別 | boolean | byte | char | double | float | int | long |
short | null | true | false | ||||
變數引用 | super | this | void | ||||
保留關鍵字 | goto | const |
關鍵詞說明
訪問控制類
private
private關鍵字是訪問控制修飾符,可以應用於類、方法或欄位(在類中宣告的變數)
具體訪問許可權如下:
protected
protected關鍵字是可以應用於類、方法或欄位(在類中宣告的變數)的訪問控制修飾符
介面的成員變數和成員方法不能宣告為protected
public
public關鍵字是可以應用於類、方法或欄位(在類中宣告的變數)的訪問控制修飾符。
接口裡的變數都隱式宣告為public static final,而接口裡的方法預設情況下訪問許可權為public。
類、方法和變數修飾符
abstract
abstract關鍵字可以修飾類或方法。
abstract類可以擴充套件(增加子類),但不能直接例項化。
abstract方法不在宣告它的類中實現,但必須在某個子類中重寫。
- 採用abstract方法的類本來就是抽象類,並且必須宣告為abstract。
- abstract類不能例項化,即不能被new出來。
- 僅當abstract類的子類實現其超類的所有abstract方法時,才能例項化abstract類的子類。這種類稱為具體類,以區別於abstract類。
- 如果abstract類的子類沒有實現其超類的所有abstract方法,該子類也是abstract類。
- abstract關鍵字不能應用於static、private或final方法,因為這些方法不能被重寫,因此,不能在子類中實現。
class
class關鍵字用來宣告新的Java類,該類是相關變數和/或方法的集合
類是面向物件的程式設計方法的基本構造單位。類通常代表某種實際實體,如幾何形狀或人。類是物件的模板。每個物件都是類的一個例項。
要使用類,通常使用new操作符將類的物件例項化,然後呼叫類的方法來訪問類的功能。
interface
interface關鍵字用來宣告新的Java介面,介面是方法的集合。
任何類都可宣告它實現一個或多個介面,這意味著它實現了在這些介面中所定義的所有方法。
一個類可以實現多個介面。
implements
implements關鍵字在class宣告中使用,以指示所宣告的類提供了在implements關鍵字後面的名稱所指定的介面中所宣告的所有方法的實現。
一個類可以實現多個介面。
extends
extends關鍵字用在class或interface宣告中,用於指示所宣告的類或介面是其名稱後跟有extends關鍵字的類或介面的子類。
一個類只能繼承一個其他類。
final
final 類是不能被繼承的 這個類就是最終的了 不需要再繼承修改 比如很多 java 標準庫就是 final 類
final 方法不能被子方法重寫
fianl 屬性表示常量,final + static 屬性表示靜態常量
一個類或者方法不能同時是abstract又是final。abstract意味著必須擴充套件類或方法,final意味著不能擴充套件類或方法。
一個方法不能同時是abstract又是final。abstract意味著必須重寫方法,final意味著不能重寫方法。
native
本地,原生方法,該方法是用Java以外的語言實現的
new
new關鍵字用於建立類的新例項
static
static關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的例項變數的情況下被訪問。
static表示本屬性或方法屬於class,並不屬於某個這個類對應的例項。
static方法不能訪問非static變數,會報錯。
strictfp
strictfp的意思是FP-strict,也就是說精確浮點的意思
一旦使用了strictfp來宣告一個類、介面或者方法時,那麼所宣告的範圍內Java的編譯器以及執行環境會完全依照浮點規範IEEE-754來執行。
因此如果想讓浮點運算更加精確,而且不會因為不同的硬體平臺所執行的結果不一致的話,那就請用關鍵字strictfp。
可以將一個類、介面以及方法宣告為strictfp,但是不允許對介面中的方法以及建構函式宣告strictfp關鍵字。
synchronized
synchronized關鍵字可以應用於方法或語句塊,表示此段程式碼是同步的。
synchronized關鍵字可防止程式碼的關鍵程式碼段一次被多個執行緒執行。是併發程式設計的基本組成元素之一。
transient
transient關鍵字可以應用於類的成員變數,以便指出該成員變數不應在包含它的類例項已序列化時被序列化。
volatile
保證可見性和禁止指令重排序,不能保證原子性。
int i; i++並不是原子操作。long,double佔兩個slot,所以用volatile修飾可以保證單次原子性。new物件賦值時,用volatile卡可以保證物件不逸出。
程式控制語句
break
用於提前退出for、while或do迴圈,或者在switch語句中用來結束case塊。
break總是退出最內層的while、for、do或switch語句。
case
case塊沒有隱式結束點。break語句通常在每個case塊末尾使用,用於退出switch語句。
如果沒有break語句,執行流將進入所有後面的case和/或default塊。
continue
continue關鍵字用來跳轉到for、while或do迴圈的下一個迭代。
continue總是跳到最內層while、for或do語句的下一個迭代。
default
default關鍵字用來標記switch語句中的預設分支。
在Java 8,default可以指定介面的預設實現方法。
do
do關鍵字用於指定一個在每次迭代結束時檢查其條件的迴圈。
else
else關鍵字總是在if-else語句中與if關鍵字結合使用。else子句是可選的,如果if條件為false,則執行該子句。
for
for關鍵字用於指定一個在每次迭代結束前檢查其條件的迴圈。
if
if關鍵字指示有條件地執行程式碼塊。條件的計算結果必須是布林值。
instanceof
instanceof關鍵字用來確定物件所屬的類。
return
return關鍵字會導致方法返回到呼叫它的方法,從而傳遞與返回方法的返回型別匹配的值。
switch
switch語句用於基於某個表示式選擇執行多個程式碼塊中的某一個。
while
while關鍵字用於指定一個只要條件為真就會重複的迴圈。.
錯誤處理
assert
斷言表示式是否為真,
語法一:
assert <boolean表示式>
如果<boolean表示式>為true,則程式繼續執行。
如果為false,則程式丟擲AssertionError,並終止執行。
語法二:
assert <boolean表示式> : <錯誤資訊表示式>
如果<boolean表示式>為true,則程式繼續執行。
如果為false,則程式丟擲java.lang.AssertionError,並輸入<錯誤資訊表示式>。
- 陷阱一:assert關鍵字需要在執行時候顯式開啟才能生效,否則你的斷言就沒有任何意義。
- 陷阱二:用assert代替if。assert關鍵字本意上是為測試除錯程式時使用的,但如果不小心用assert來控制了程式的業務流程,那在測試除錯結束後去掉assert關鍵字就意味著修改了程式的正常的邏輯。
- 陷阱三:assert斷言失敗將面臨程式的退出。這在一個生產環境下的應用是絕不能容忍的。
catch
catch關鍵字用來在try-catch或try-catch-finally語句中定義異常處理塊。
finally
finally關鍵字用來定義始終在try-catch-finally語句中執行的塊。
finally塊通常包含清理程式碼,用在部分執行try塊後恢復正常執行。
throw
throw關鍵字用於在程式碼中引發異常。
throws
throws關鍵字可以應用於方法,以便指出方法引發了特定型別的異常。
try
try關鍵字用於包含可能引發異常的語句塊。
包相關
import
import關鍵字使一個包中的一個或所有類在當前Java原始檔中可見。可以不使用完全限定的類名來引用匯入的類
package
package關鍵字指定在Java原始檔中宣告的類所駐留的Java包。
基本型別
boolean
boolean 是 Java 原始型別。boolean 變數的值可以是 true 或 false。
boolean 變數只能以 true 或 false 作為值。boolean 不能與數字型別相互轉換。
包含 boolean 運算元的表示式只能包含 boolean 運算元。
Boolean 類是 boolean 原始型別的包裝物件類。
byte
byte 是 Java 原始型別。byte 可儲存在 [-128, 127] 範圍以內的整數值。
Byte 類是 byte 原始型別的包裝物件類。它定義代表此型別的值的範圍的 MIN_VALUE 和 MAX_VALUE 常量。 Java 中的所有整數值都是 32 位的 int 值,除非值後面有 l 或 L(如 235L),這表示該值應解釋為 long。
char
char 是 Java 原始型別。char 變數可以儲存一個 Unicode 字元。
Character 類包含一些可用來處理 char 變數的 static 方法,這些方法包括 isDigit()、isLetter()、isWhitespace() 和 toUpperCase()。
char 值沒有符號。
double
double 是 Java 原始型別。double 變數可以儲存雙精度浮點值。
由於浮點資料型別是實際數值的近似值,因此,一般不要對浮點數值進行是否相等的比較。
Java 浮點數值可代表無窮大和 NaN(非數值)。Double 包裝物件類用來定義常量 MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。
float
float 是 Java 原始型別。float 變數可以儲存單精度浮點值。
使用此關鍵字時應遵循下列規則:
Java 中的浮點文字始終預設為雙精度。要指定單精度文字值,應在數值後加上 f 或 F,如 0.01f。
由於浮點資料型別是實際數值的近似值,因此,一般不要對浮點數值進行是否相等的比較。
Java 浮點數值可代表無窮大和 NaN(非數值)。Float 包裝物件類用來定義常量 MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。
int
int 是 Java 原始型別。int 變數可以儲存 32 位的整數值。
Integer 類是 int 原始型別的包裝物件類。它定義代表此型別的值的範圍的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整數值都是 32 位的 int 值,除非值後面有 l 或 L(如 235L),這表示該值應解釋為 long。
long
long 是 Java 原始型別。long 變數可以儲存 64 位的帶符號整數。
Long 類是 long 原始型別的包裝物件類。它定義代表此型別的值的範圍的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整數值都是 32 位的 int 值,除非值後面有 l 或 L(如 235L),這表示該值應解釋為 long。
short
short 是 Java 原始型別。short 變數可以儲存 16 位帶符號的整數。
Short 類是 short 原始型別的包裝物件類。它定義代表此型別的值的範圍的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整數值都是 32 位的 int 值,除非值後面有 l 或 L(如 235L),這表示該值應解釋為 long。
null
將null賦給非原始變數相當於釋放該變數先前所引用的物件。
不能將null賦給原始型別(byte、short、int、long、char、float、double、boolean)變數。
true
true 關鍵字表示 boolean 變數的兩個合法值中的一個。
false
false 關鍵字代表 boolean 變數的兩個合法值之一。
變數引用
super
super關鍵字用於引用使用該關鍵字的類的超類。
作為獨立語句出現的super表示呼叫超類的構造方法。
super.()表示呼叫超類的方法。只有在如下情況中才需要採用這種用法:要呼叫在該類中被重寫的方法,以便指定應當呼叫在超類中的該方法。
this
this關鍵字用於引用當前例項。
當引用可能不明確時,可以使用this關鍵字來引用當前的例項。
在上面的-示例-中,構造方法引數number與類的成員變數同名。this.number明確表示MyClass的該例項的number成員變數。
void
void可以用作方法的返回型別,以指示該方法不返回值。
保留關鍵字
goto
關鍵字,但不能使用
const
是關鍵字,但不能使用