文章目錄
1. 簡化版
關鍵字 | 含義 | 關鍵詞 | 含義 |
---|---|---|---|
abstract | 表明類或成員方法具有抽象的屬性 | assert | 斷言,用於程序調試 |
boolean | 基本數據類型之一,布爾類型 | break | 用於跳出當前塊,例如循環的跳出 |
byte | 基本數據類型之一,字節類型 | case | 用於switch語句中,表示其中的一個分支情況 |
catch | 用於異常處理,用來捕獲異常 | char | 基本數據類型之一,字符類型 |
class | 聲明一個類 | const | 兩個保留字之一,表示以後可能會用到 |
continue | 循環中使用,表示越過當前循環體的剩餘部分,立刻跳到循環體首部 | default | 默認,例如,switch語句中,表示一個默認的分支 |
do | 用於do-while循環中,後帶循環的條件 | double | 基本數據類型之一,雙精度浮點類型 |
else | if-else條件語句中,表示條件不成立時的分支 | enum | 枚舉類型 |
extends | 繼承,表示一個類繼承於另外一個類 | false | boolean類型的取值,表示錯誤 |
final | 表示不可修改,第二部分細講 | finally | 用於異常處理,聲明異常處理流程中一定會執行的語句塊 |
float | 基本數據類型之一,單精度浮點類型 | for | 循環的引導詞 |
goto | 兩個保留字之一,表示以後可能會用到 | if | if-else條件語句中,表示條件成立時的分支 |
implements | 表示一個類實現了給定的接口 | import | 表示導入指定的類或包 |
instanceof | 用於測試一個對象是否是指定對象的實例對象 | int | 基本數據類型之一,整數類型 |
interface | 聲明一個接口 | long | 基本數據類型之一,長整數類型 |
package | 包 | public | 表示訪問控制方式:公有模式 |
private | 表示訪問控制方式:私有模式 | protected | 表示訪問控制方式:保護模式 |
native | 用於修飾方法,表示該方法由其他語言實現 | new | 用來創建新實例對象 |
null | 空值 | return | 表示從成員方法中返回 |
short | 基本數據類型之一,短整數類型 | super | 表示當前對象的父類型的引用或父類型構造方法 |
static | 表明具有靜態屬性 | strictfp | 用來聲明FP_strict(單精度或雙精度浮點數)表達式遵循IEEE 754算術規範 |
switch | 分支語句結構的引導詞 | synchronzed | 表明一段代碼同步執行 |
this | 指向當前實例對象的引用 | throw | 拋出一個異常 |
throws | 聲明在當前定義的成員方法中所有需要拋出的異常 | transient | 聲明不用序列化的成員域 |
true | boolean類型的取值,表示正確 | try | |
void | 聲明當前成員方法沒有返回值 | volatile | 表明線程在每次使用變量的時候,都會讀取變量修改後的最的值 |
while | 循環結構 |
2. 詳解版
2.1. 數據類型
對於數據類型,沒有什麼好說的,包括:
- 8個基本數據類型:float,double,byte,short,int,long,boolean,char
- 其他相關的:null,void,true,false
- enum
最後一個爲枚舉類型,作用爲:用於聲明一組命名的常數,當一個變量有幾種可能的取值時,可以將它定義爲枚舉類型,具體格式舉例:
public enum Color {
RED, GREEN, BLANK, YELLOW
}
看到一篇比較詳細的博客,關於枚舉類型的7種常見用法:
https://blog.csdn.net/qq_27093465/article/details/52180865
2.2. 與包相關
- package:表示包
- import:導入包
關於導包,有一個小的注意點:如果我們現在要在permutation中導入blog.aa.Hello類:
導入的語句:
或者也可以用:
但不能用下面的語句:因爲這個語句的意思是,blog的下一級包中的所有類,不包含blog包中裏面的包裏的類。這樣子做的目的是爲了區分:如果blog中有一個hello類,blog.aa包中也有一個hello類,通過這個規則,就可以準確的區別用戶導入的具體是什麼包
2.3. 訪問修飾符的關鍵字
- public,protected,private
2.4. 流程控制(循環、條件)
- 循環:do,while,for,continue,break
- 條件:if,else,switch,case,default
- return
2.5. 錯誤處理
- try,catch,finally,throw,throws
- finally:只用於 try/catch 語句中,表示這段語句最終一定被執行
- throw 和 throws 的區別:
- throw 是語句拋出一個異常;throws 是方法拋出一個異常
- throw語句用在方法體內,表示拋出異常,由方法體內的語句處理,throws語句用在方法聲明後面,表示再拋出異常,由調用這個方法的上一級方法中的語句來處理
2.6. 保留字
- const
- goto
- 對於保留字,就是當前沒有意義,但以後可能會使用,防止後面修改爲關鍵字後,代碼已經使用了這些關鍵字作爲變量,所以先設爲保留字,防止被使用
2.7. 類相關
- class,interface,abstract,extends,new,implements
- this,super
- this:
- 引用隱式參數
- 調用該類其他的構造器
- super:
- 調用超類的方法
- 調用超類的構造器
- this:
- static:主要有4種使用情況:成員變量、成員方法、代碼塊、內部類
- 成員變量:static 關鍵字修飾的成員變量,起到全局變量的作用,在內存中只有一個複製(所有實例都指向同一個內存地址),只要靜態變量所在的類被加載,這個靜態變量就會被分配空間。注意:Java語言中,不能在方法體中定義static變量。
- 成員方法:static 方法中不能使用 this 和 super 關鍵字,不能調用非 static 方法,只能訪問所屬類的靜態成員變量和成員方法。原因:調用這個方法的時候,可能這個類的對象還沒有創建,例如:
Math.max(a, b);
此時,並沒有創建Math實例 - 代碼塊:靜態代碼塊在類中獨立於成員變量和成員函數的代碼塊,不在任何一個方法體中,JVM加載類時會執行 static 代碼塊。
- 內部類:可以不依賴於外部類實例對象而被實例化的類。
- instanceof:一個二元運算符,它的作用是判斷一個引用類型的變量所指向的對象是否是一個類(或接口、抽象類、父類)的實例,即它左邊是否是它右邊的類的實例
public class Test {
public static void main(String args[]) {
String s = "Hello";
if (s instanceof String) {
System.out.println("true");
}
if (s instanceof Object) {
System.out.println("true");
}
}
}
- final:用於聲明屬性、方法和類,分別表示,屬性不可變,方法不可覆蓋,類不可被繼承,注意,這裏屬性不可變,對於引用類型,這裏指引用不可變,並非是對象不可變。舉例:
public static void main(String[] args) {
final StringBuilder sb = new StringBuilder("hello");
sb.append(" java");
System.out.println(sb.toString());
}
上面這段代碼是可以順利執行的,final指的是引用的不可變性,即它只能指向初始時指向的那個對象,而不關心指向對象內容的變化。例如上面例子中,指向的對象內容變化,但依舊可以順利執行。
而當我們修改它的指向時,就會報錯:
2.8. 線程
- synchronized:表示指定的方法or代碼塊需要同步執行
- volatile:對於共享的數據,爲了提高效率 ,線程有自己的一份數據,但不一定是罪行的數據,volatile 修飾的對象使用時,必須去讀取主存,將數值更新爲最新值
2.9. 斷言
- assert
- 斷言提供了一種在代碼中進行正確性檢查的機制。它的作用是對一個 boolean 表達式進行檢查,一個正確運行的程序必須保證這個 boolean 表達式的值爲 true,若 boolean 表達式的值爲 false,則說明程序已經處於一種不正確的狀態下,系統需要提供告警信息並且退出程序。
2.10. transient
- transient 用於序列化操作中,用來表示一個域不是該對象串行化的一部分。當一個對象被串行化的時候,transient型變量的值不包括在串行化的表示中,然而非transient型的變量是被包括進去的。
2.11. native
- native關鍵詞修飾的方法是一個原生態方法,方法對應的實現不是在當前文件,而是在其他語言中實現的,這個關鍵主要跟 JNI技術相結合使用,這裏附上一個關於JNI的demo的鏈接:https://blog.csdn.net/Applying/article/details/81572167
2.12. strictfp
- strictfp 是 strict float point 的縮寫,指的是精確浮點,用來確保浮點數運算的準確性。strictfp 可以用來修飾類、接口或者方法。
private static strictfp void count() {
float f = 0.123f;
double d = 0.356;
System.out.println(f + d);
}
// 這裏,輸出的結果爲: 0.47900000339746474