1. 程式人生 > >【Java基礎】Java運算符優先級

【Java基礎】Java運算符優先級

() logs 分享 body rowspan 單元 ima idt string

序列號

符號

名稱

結合性(與操作數)

目數

說明

1

.

從左到右

雙目

( )

圓括號

從左到右

[ ]

方括號

從左到右

2

+

正號

從右到左

單目

-

負號

從右到左

單目

++

自增

從右到左

單目

前綴增,後綴增

- -

自減

從右到左

前綴減,後綴減

~

按位非/取補運算

從右到左

單目

邏輯非

從右到左

單目

“!”不可以與“=”聯用

3

*

從左到右

雙目

/

從左到右

雙目

整數除法:取商的整數部分,小數部分去掉,不四舍五入

%

取余

從左到右

雙目

4

+

從左到右

雙目

-

從左到右

雙目

5

<<

左移位運算符

從左到右

雙目

>>

帶符號右移位運算符

從左到右

雙目

>>>

無符號右移

從左到右

雙目

6

<

小於

從左到右

雙目

關系運算符“大於”說明

<=

小於或等於

從左到右

雙目

>

大於

從左到右

雙目

>=

大於或等於

從左到右

雙目

instanceof

確定某對象是否屬於指定的類

從左到右

雙目

7

==

等於

從左到右

雙目

關系運算符“==”說明

!=

不等於

從左到右

雙目

8

&

按位與

從左到右

雙目

9

|

按位或

從左到右

雙目

10

^

按位異或

從左到右

雙目

11

&&

短路與

從左到右

雙目

12

||

短路或

從左到右

雙目

13

? :

條件運算符

從右到左

三目

14

=

賦值運算符

從右到左

雙目

+=

混合賦值運算符

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

>>>=

說明:

  1、算數運算符

    + :加法

    - :減法

    * :乘法

    / :除法

    % :取余運算

  2、關系運算符

    < :只能比較基本類型數據之間的關系,不能比較對象之間的關系。

    > : (同關系運算符“<”)

    <=: (同關系運算符“<”)

    >=: (同關系運算符“<”)

    == :若使用該運算符比較兩個對象的引用(變量),則實質上是比較兩個變量是否引用了相同的對象。所謂相同的對象是指,是否是在堆棧(Heap)中開辟的同一塊兒內存單元中存放的對象。

  若比較兩個對象的引用(變量)所引用的對象的內容是否相同,則應該使用equals()方法,該方法的返回值類型是布爾值。需要註意的是:若用 類庫中的類創建對象,則對象的引用調用equals()方法比較的是對象的內容;若用自定義的類來創建對象,則對象的引用調用equals()方法比較的 是兩個引用是否引用了同一個對象,因為第二種情況equals()方法默認的是比較引用。

    != :(同關系運算符“==”)

  3、邏輯運算符 (操作符只能是布爾類型的)

    &&

    ||

    !

技術分享圖片
 1 public class Demo {
 2     public static void main(String[] args) {
 3 //        System.out.println((!‘1‘||‘1‘)+5);//編譯錯誤
 4 //        System.out.println(!5);//編譯錯誤
 5 //        System.out.println((‘1‘||‘1‘)+5);//編譯錯誤
 6 //        System.out.println(1||2);//編譯錯誤
 7 //        System.out.println(5-3||4-2);//編譯錯誤
 8         System.out.println(5<3||4>3);//true
 9     }
10 }
技術分享圖片

  4、位運算符

    &

    |

    ^

    ! :不可以與=聯用,因為!是一元操作符;不可以對布爾類型的數據進行按位非運算

  5、移位運算符(只能處理整數運算符)

  Char、byte、short類型,在進行移位之前,都將被轉換成int類型,移位後的結果也是int類型;移位符號右邊的操作數只截取其二 進制的後5位(目的是防止因為移位操作而超出int類型的表示範圍:2的5次方是32,int類型的最大範圍是32位);對long類型進行移位,結果仍 然是long類型,移位符號右邊的操作符只截取其二進制的後6位。

  << :

  >> :若符號位為正,則在最高位插入0;若符號位為負,則在最高位插入1

  >>> :無論正負,都在最高位插入0

 1 public class Demo {
 2     public static void main(String[] args) {
 3         // 0000 0000 0000 0101
 4         // 0000 0000 0000 0010
 5         System.out.println(5>>1);//2
 6         // 0000 0000 0000 1000
 7         // 0000 0000 0000 0100
 8         System.out.println(8>>1);//4
 9         System.out.println(3+5>>1);//4
10         System.out.println(3+(5>>1));//5
11     }
12 

【Java基礎】Java運算符優先級