關於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 }
測試結果

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