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全套資料一份

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM