1. 程式人生 > >Java運算子及優先順序(全)

Java運算子及優先順序(全)

運算子是一種特殊的符號,用以表示資料的運算、賦值和比較等。

Java運算子分為以下幾種:

• 算術運算子:+,-,*,/,%,++,--

• 賦值運算子:=

• 擴充套件後的賦值運算子:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=

• 位運算子:&,|,~,^,<<,>>,>>>

• 比較運算子:>,>=,<,<=,==

• 邏輯運算子:&&,&,||,|,!,^

• 三目運算子:? :

 

1、算術運算子

1)+:加法運算子

例如如下程式碼:

int a = 1;

int b = 2;

int sum = a+b;

System.out.println(sum); //sum的值為3

另外,+還可以作為字串的連線運算子。

 

2)-:減法運算子

例如如下程式碼:

int a = 3;

int b = 2;

int sub = a-b;

System.out.println(sub); //sub的值為1

 

3)*:乘法運算子

例如如下程式碼:

int a = 5;

int b = 6;

int multiply = a*b;

System.out.println(multiply ); //multiply 的值為30

 

4)/:除法運算子

例如如下程式碼:

int a = 10;

int b = 5;

int div = a/b;

System.out.println(div); //div的值為2

注:如果除法運算子的兩個運算元都是整數型別,則計算結果為整數,除數不可以為0,否則會引發異常;如果除法運算子的兩個運算元中至少一個是浮點數,則計算結果也是浮點數,此時除數可以為0或0.0,得到的結果是正無窮大或負無窮大。

 

5)%:求餘運算子(取模運算子)

例如如下程式碼:

int a = 10;

int b = 3;

int mod = a%b;

System.out.println(mod ); //mod 的值為1

注:求餘運算子的結果不一定總是整數。如果求餘運算子的兩個運算元都是整數,則第二個運算元不能為0(同除法運算規則);如果求餘運算子的兩個運算元中至少一個是浮點數,則第二個運算元可以是0或0.0,但求餘結果是是非數:NaN。

 

6)++:自加運算子

++自加運算子是單目運算子(一元運算子),只有一個運算元。運算子既可以放在運算元的左邊也可以放在運算元的右邊。如果把++放在左邊,則先把運算元加1,然後再運算;如果把++放在右邊,則先運算,然後再把運算元加1。

自加運算子放在運算元左邊的程式碼:

int a = 2;

int b = ++a + 3; //a先自加,然後再執行算術運算

System.out.println(a); //a的值為3

System.out.println(b); //b 的值為6

自加運算子放在運算元右邊的程式碼:

int a = 2;

int b = a++ + 3; //a先執行算術運算,再自加

System.out.println(a); //a的值為3

System.out.println(b); //b 的值為5

 

7)--:自減運算子

--自減運算子也是單目運算子(一元運算子),只有一個運算元。用法與++類似,只是將運算元的值減1;

注:自加和自減只能用於操作變數,不能用於運算元值直接量、常量或表示式。例如3--是錯誤的!

 

2. 賦值運算子

賦值運算子用於為變數指定變數值。

例如 String str = "java"; //為變數str賦值java

 

 3. 擴充套件後的賦值運算子

+=:對於a+=b,即對應於a=a+b。

-=:對於a-=b,即對應於a=a-b。

*=:對於a*=b,即對應於a=a*b。

/=:對於a/=b,即對應於a=a/b。

%=:對於a%=b,即對應於a=a%b。

&=:對於a&=b,即對應於a=a&b。

|=:對於a|=b,即對應於a=a|b。

^=:對於a^=b,即對應於a=a^b。

<<=:對於a<<=b,即對應於a=a<<b。

>>=:對於a>>=b,即對應於a=a>>b。

>>>=:對於a>>>=b,即對應於a=a>>>b。

 

 4. 位運算子

&:按位與。當兩位同時為1時才返回1。

|:按位或。只要有一位為1就返回1。

~:按位非。單目運算子,將運算元的每一位(包括符號位)全部取反。

^:按位異或。當兩位不同時返回1,相同時返回0。

<<:左移運算子

>>:右移運算子

>>>:無符號右移運算子

 

 程式碼示例如下:

System.out.println(5&9); //輸出1

System.out.println(5|9); //輸出13

System.out.println(~-5); //輸出4

System.out.println(5^9); //輸出12

System.out.println(5<<2); //輸出20

System.out.println(-5<<2); //輸出-20

System.out.println(-5>>2); //輸出-2

System.out.println(-5>>>2); //輸出1073741822

 

5. 比較運算子

比較運算子用於判斷兩個常量或變數的大小,比較結果是是一個布林值(true或false)。

比較運算子有:>(大於),>=(大於等於),<(小於),<=(小於等於),==(等於)。

程式碼示例如下:

System.out.println(7>3); //輸出true

System.out.println(7<=3); //輸出false

 

6. 邏輯運算子

邏輯運算子用於操作兩個布林的變數或常量,有如下6個:

&&:與,兩個運算元都為true才返回true,否則返回false。

&:不短路與,作用與&&相同,但不會短路。

||:或,兩個運算元只要有一個為true,就返回true,兩個運算元都為false才返回false。

|:不短路或,作用與||相同,但不會短路。

!:非,或取反,如果運算元是true,則返回false。如果是false,則返回true。

^:異或,當兩個運算元不同時才返回true,相同返回false。

 

下面程式碼示範了邏輯運算子短路與不短路的區別(以|和||的區別為例):

int a = 3;

int b = 9;

if(a>2 | b++ >9){

  System.out.println(b); //輸出10,說明b++ >9得到了計算

}

if(a>2 || b++ >9){

  System.out.println(b); //輸出9,說明b++ >9沒有得到了計算

}

&與&&的區別與此類似。

 

7. 三目運算子

 三目運算子:? :,語法格式如下:

(expression) ? if-true-statement : if-false-statement

三目運算子的語法規則是:先對邏輯表示式expression求值,如果expression返回true,則返回第二個運算元的值,否則返回第三個運算元的值。

程式例項如下:

String str = 7>4?"7大於4":"7不大於4";

System.out.println(str); //輸出7大於4

 

8. 運算子的優先順序

運算子優先順序(優先順序上行優先於下行)
運算子說明 Java運算子
分隔符 . [] () {} , ;
單目運算子 ++ -- ~ !
強制型別轉換運算子 (type)
乘法、除法、求餘 * / %
加法、減法 + -
移位運算子 <<  >>  >>>
關係運算符 < <= > >=  instanceof
等價運算子 ==   !=
按位與 &
按位異或 ^
按位或 |
條件與 &&
條件或 ||
三目運算子 ?:
賦值 = += -= *= /= &= |= ^= %= <<= >>= >>>=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

歡迎關注微信公眾號【Java典籍】,收看更多Java技術乾貨!關注即送java全套資料一份

   ▼微信掃一掃下圖↓↓↓二維碼關注

 

&n