Java運算符優先級spa
序列號.net |
符號code |
名稱對象 |
結合性(與操做數)blog |
目數內存 |
說明ci |
1get |
.編譯 |
點table |
從左到右 |
雙目 |
|
( ) |
圓括號 |
從左到右 |
|
|
|
[ ] |
方括號 |
從左到右 |
|
|
|
2 |
+ |
正號 |
從右到左 |
單目 |
|
- |
負號 |
從右到左 |
單目 |
|
|
++ |
自增 |
從右到左 |
單目 |
前綴增,後綴增 |
|
- - |
自減 |
從右到左 |
前綴減,後綴減 |
||
~ |
按位非/取補運算 |
從右到左 |
單目 |
|
|
! |
邏輯非 |
從右到左 |
單目 |
||
3 |
* |
乘 |
從左到右 |
雙目 |
|
/ |
除 |
從左到右 |
雙目 |
整數除法:取商的整數部分,小數部分去掉,不四捨五入 |
|
% |
取餘 |
從左到右 |
雙目 |
|
|
4 |
+ |
加 |
從左到右 |
雙目 |
|
- |
減 |
從左到右 |
雙目 |
|
|
5 |
<< |
左移位運算符 |
從左到右 |
雙目 |
|
>> |
帶符號右移位運算符 |
從左到右 |
雙目 |
|
|
>>> |
無符號右移 |
從左到右 |
雙目 |
|
|
6 |
< |
小於 |
從左到右 |
雙目 |
|
<= |
小於或等於 |
從左到右 |
雙目 |
|
|
> |
大於 |
從左到右 |
雙目 |
|
|
>= |
大於或等於 |
從左到右 |
雙目 |
|
|
instanceof |
肯定某對象是否屬於指定的類 |
從左到右 |
雙目 |
|
|
7 |
== |
等於 |
從左到右 |
雙目 |
|
!= |
不等於 |
從左到右 |
雙目 |
|
|
8 |
& |
按位與 |
從左到右 |
雙目 |
|
9 |
| |
按位或 |
從左到右 |
雙目 |
|
10 |
^ |
按位異或 |
從左到右 |
雙目 |
|
11 |
&& |
短路與 |
從左到右 |
雙目 |
|
12 |
|| |
短路或 |
從左到右 |
雙目 |
|
13 |
? : |
條件運算符 |
從右到左 |
三目 |
|
14 |
= |
賦值運算符 |
從右到左 |
雙目 |
|
+= |
混合賦值運算符 |
|
|||
-= |
|
||||
*= |
|
||||
/= |
|
||||
%= |
|
||||
&= |
|
||||
|= |
|
||||
^= |
|
||||
<<= |
|
||||
>>= |
|
||||
>>>= |
|
說明:
一、算數運算符
+ :加法
- :減法
* :乘法
/ :除法
% :取餘運算
二、關係運算符
< :只能比較基本類型數據之間的關係,不能比較對象之間的關係。
> : (同關係運算符「<」)
<=: (同關係運算符「<」)
>=: (同關係運算符「<」)
== :若使用該運算符比較兩個對象的引用(變量),則實質上是比較兩個變量是否引用了相同的對象。所謂相同的對象是指,是不是在堆棧(Heap)中開闢的同一起內存單元中存放的對象。
若比較兩個對象的引用(變量)所引用的對象的內容是否相同,則應該使用equals()方法,該方法的返回值類型是布爾值。須要注意的是:若用類庫中的類建立對象,則對象的引用調用equals()方法比較的是對象的內容;若用自定義的類來建立對象,則對象的引用調用equals()方法比較的是兩個引用是否引用了同一個對象,由於第二種狀況equals()方法默認的是比較引用。
!= :(同關係運算符「==」)
三、邏輯運算符 (操做符只能是布爾類型的)
&&
||
!
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 }
四、位運算符
&
|
^
! :不能夠與=聯用,由於!是一元操做符;不能夠對布爾類型的數據進行按位非運算
五、移位運算符(只能處理整數運算符)
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 }