Java入門(四):運算子優先順序、關鍵字與保留字
上次介紹了Java的運算子,今天來介紹下運算子的優先順序,以及Java的關鍵字、保留字。
一、運算子優先順序
序號 |
運算子 |
名稱 |
目數 |
結合性 |
說明 |
1 |
[ ] |
方括號 |
從左向右 |
優先順序最高 |
|
. |
點號 |
雙目 |
|||
( ) |
圓括號 |
||||
2 |
! |
邏輯非運算 |
單目 |
從右向左 |
|
~ |
按位非運算 |
單目 |
|||
++ |
自增 |
單目 |
|||
-- |
自減 |
單目 |
|||
+ |
正號 |
單目 |
|||
- |
負號 |
單目 |
|||
( ) |
強制型別轉換 |
||||
new |
new關鍵字 |
||||
3 |
* |
乘號 |
雙目 |
從左向右 |
算術運算子 |
/ |
除號 |
||||
% |
取餘 |
||||
4 |
+ |
加號 |
雙目 |
從左向右 |
算術運算子 |
- |
減號 |
||||
5 |
<< |
帶符號左移位運算 |
雙目 |
從左向右 |
位運算子 |
>> |
帶符號右移位運算 |
||||
>>> |
無符號右移運算 |
||||
6 |
< |
小於 |
雙目 |
從左向右 |
關係運算符 |
<= |
小於等於 |
雙目 |
|||
> |
大於 |
雙目 |
|||
>= |
大於等於 |
雙目 |
|||
instanceof |
物件是否為特定類的例項 |
雙目 |
|||
7 |
== |
關係等於運算 |
雙目 |
從左向右 |
關係運算符 |
!= |
關係不等於運算 |
雙目 |
從左向右 |
||
8 |
& |
按位與運算 |
雙目 |
從左向右 |
位運算子 |
9 |
^ |
按位異或運算 |
雙目 |
從左向右 |
|
10 |
| |
按位或運算 |
雙目 |
從左向右 |
|
11 |
&& |
邏輯與運算 |
雙目 |
從左向右 |
邏輯運算子 |
12 |
|| |
邏輯或運算 |
雙目 |
從左向右 |
|
13 |
? : |
三目運算 |
三目 |
從右向左 |
|
14 |
= |
賦值運算 |
雙目 |
從右向左 |
優先順序最低 |
+= |
混合賦值運算子 |
||||
-= |
|||||
*= |
|||||
/= |
|||||
%= |
|||||
&= |
|||||
|= |
|||||
^= |
|||||
<<= |
|||||
>>= |
|||||
>>>= |
下面用程式碼來介紹下從右向左計算。
package javalearningday03;
/**
*
* @author 小川94
* @date 2018年1月28日
*/
public class JavaOperationPriority {
public static void main(String[] args) {
testMethod();
}
/**
* 由右向左計算,在進行運算程式碼編寫時,建議加上括號區分層級性,增加可讀性,同時方便後期維護
*/
public static void testMethod() {
// 右結合運算:運算子右邊是否連線變數
// -n++,-號右邊連線變數n,++右邊沒有連線變數,先算-號,再算++
int n = 5;
int m = -n++; //後加加是先算整體,(-n)++為-5
System.out.println(m); // m = -5
System.out.println(n); // n = 6
// ++右邊連線變數i,先計算++i,再計算-(++i)
int i = 5;
int k = -++i;
System.out.println(i); // i = 6
System.out.println(k); // k = -6
int a = 5;
int b = -8-++a;
System.out.println(a); // 6
System.out.println(b); // -14
int c = 5;
int d = c<<=2; //c=c<<2; d = c
System.out.println(c); // 20
System.out.println(d); // 20
}
}
二、Java關鍵字和保留字
序號 |
關鍵字 |
含義 |
1 |
abstract |
修飾類、方法,成為抽象類、抽象方法 |
2 |
assert |
用來查詢內部程式錯誤 |
3 |
boolean |
基本資料型別之一,布林型別 |
4 |
break |
跳出一個switch或結束一個迴圈 |
5 |
byte |
基本資料型別之一,8位整型 |
6 |
case |
switch語句的一個分支 |
7 |
catch |
捕獲異常的try塊子句 |
8 |
char |
基本資料型別之一,字元型 |
9 |
class |
定義一個類 |
10 |
const |
未使用 |
11 |
continue |
跳過continue語句後面的迴圈部分,進入下一次迴圈 |
12 |
default |
switch的預設子句 |
13 |
do |
do/while迴圈最前面的語句 |
14 |
double |
基本資料型別之一,雙精度浮點數 |
15 |
else |
if語句的else子句 |
16 |
enum |
列舉型別 |
17 |
extends |
表明一個型別是另一個型別的子型別 |
18 |
final |
一個常量,或不能覆蓋的一個類或非法 |
19 |
finally |
try語句塊中總會執行的部分 |
20 |
float |
基本資料型別之一,單精度浮點數 |
21 |
for |
一種迴圈型別 |
22 |
goto |
未使用 |
23 |
if |
一個條件語句 |
24 |
implements |
定義一個類實現的介面 |
25 |
import |
匯入一個包 |
26 |
instanceof |
判斷一個物件是否為一個類的例項 |
27 |
int |
基本資料型別之一,32位整型 |
28 |
interface |
一種抽象型別,其中包含可以由類實現的方法 |
29 |
long |
基本資料型別之一,64位長整型 |
30 |
native |
用來宣告一個方法是由與計算機相關的語言(如C/C++/FORTRAN語言)實現的 |
31 |
new |
用來建立新的例項物件 |
32 |
null |
一個空引用 |
33 |
package |
包含類的一個包 |
34 |
private |
一種訪問控制方式,私有模式,只能由該類的方法訪問 |
35 |
protected |
一種訪問控制方式,保護模式,只能由該類、其子類和同包類的方法訪問 |
36 |
public |
一種訪問控制方式,共有模式,所有類的方法都可以訪問 |
37 |
return |
從一個方法返回 |
38 |
short |
基本資料型別之一,16位短整型 |
39 |
static |
表明具有靜態屬性,屬於類,不屬於類的物件 |
40 |
strictfp |
對浮點數計算使用嚴格的規則 |
41 |
super |
超類物件或建構函式 |
42 |
switch |
一個選擇語句 |
43 |
synchronized |
對執行緒而言是原子的方法或程式碼塊 |
44 |
this |
當前類的一個方法或建構函式的隱含引數 |
45 |
throw |
丟擲一個異常 |
46 |
throws |
一個方法可能丟擲的異常 |
47 |
transient |
標誌非永久的資料 |
48 |
try |
捕獲異常的程式碼塊 |
49 |
void |
修飾方法,表示無返回值 |
50 |
volatile |
確保一個欄位可以由多個執行緒訪問 |
51 |
while |
一種迴圈 |
52 |
true |
不是關鍵字,是字面量,但是依舊不能當做變數名使用,屬於保留字 |
53 |
false |
文章首發於我的個人公眾號:悅樂書。喜歡分享一路上聽過的歌,看過的電影,讀過的書,敲過的程式碼,深夜的沉思。期待你的關注!
公眾號後臺輸入關鍵字“Java學習電子書”,即可獲得12本Java學習相關的電子書資源,如果經濟能力允許,還請支援圖書作者的紙質正版書籍,創作不易。