Java運算符優先級


關於Java運算符優先級內容,單獨記錄一下,以前雖然有概念但是比較模糊,具體使用過程中可能還是不太清楚,只會常用的幾種優先級。

常見運算符分類

常見運算符根據參與運算的變量個數,可以粗略分為一元運算、二元運算和三元運算,此外還包括'( )',和'='號賦值運算。

(1)一元運算:!、++、--、~,即 非、自增、自減和取反

(2)二元運算:+、-、*、/、%、位運算(>>、<<、>>>)、關系運算(比較)、邏輯運算(&、|、^)

(3)三元運算:三元運算也叫三目運算

常見運算符優先級

大體上來說優先級順序是()→一元運算→二元運算→三元運算→=,即()的優先級最高,=號賦值的優先級最低,具體參考代碼。

 1 public class OperatorPriority{
 2     public static void main(String[] args){
 3         //運算符優先級測試
 4         //算術運算比關系運算優先級高
 5         System.out.println(3>1+4);//false
 6         System.out.println(3>2*5);//false
 7         //關系運算優先級大於邏輯運算
 8         System.out.println(3>1&true);//true
 9         System.out.println(3>1^true);//false
10         //算術運算比位運算優先級高
11         System.out.println(1+5<<2);//24
12         System.out.println(1+5>>1);//3
13         //位運算比關系運算優先級高
14         System.out.println(5>1>>2);//true
15         System.out.println(5>(1&1));//true
16         System.out.println(5>-6>>>1);//false
17         //取反優先級大於算術
18         System.out.println(~5+1);//-5,不是-7
19         System.out.println(~5*2);//-12
20 
21         //三元運算符
22         //算術比三元高
23         System.out.println(3>2?1:20+20);//1,不是21
24         //三元比關系運算低
25         Object r=3>2?1:9<3;//r=3>2?1:false 
26         System.out.println(r);//如果三元比關系高,返回false,否則返回1
27         //三元比邏輯低 結果為true
28         System.out.println(3>2?true:false&&false);//如果三元運算符優先,結果為false
29         //三元比位(& | ^)低,結果是5
30         System.out.println(3>2?5:8&1);//三元大於位,結果是1,三元小於位,結果是5    
31     }    
32 }

測試結果

總結

總體來說,需要參與運算元素越多的運算符,優先級最低,如三目運算符比取反優先級更低,但是實際開發中估計無需刻意背誦優先級,不確定的使用括號一並解決並且好閱讀。

 

參考博文:

(1)https://www.cnblogs.com/gavin-yao/p/10595835.html


免責聲明!

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



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