1. 程式人生 > >Java入門(四):運算子優先順序、關鍵字與保留字

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學習相關的電子書資源,如果經濟能力允許,還請支援圖書作者的紙質正版書籍,創作不易。