1. 程式人生 > 其它 >12、筆記:運算子的優先順序

12、筆記:運算子的優先順序

到目前為止,我們已經學習到了Java語言的好幾種運算子,包括算數運算子、賦值運算子、邏輯運算子、關係運算符等基礎運算子,當我們書寫這些運算子時,那運算子之間的優先順序順序是如何排列的? 運算子優先順序順序總結: 正負號>乘除餘數>加減>大於 小於 等等於 不等於 不大於 >與或非>各種賦值符號 1、首先是算數運算子,Java中的算數運算子主要包括加+ 減- 乘* 除/ 負號- 正號+ 以及 取餘%,就數學上邊的四則運算來說,已經被我們熟知的乘法和除法的優先順序高於加法和減法,那他們在java中的優先順序順序也是如此;取餘數依賴除法的操作,所以餘數和乘除法的優先順序相同;還有正負號,數學上約定俗成負數可以直接參與四則運算,這就意味著負號作為數字前面的減號,他的優先順序比四則運算要高, 於是算數運算子的優先順序順序是:正負號>乘除餘數>加減; //算數運算子 //比較加減乘除以及取餘數運算優先順序順序: int a = 1 + 2/2 +8*5; System.out.println("a:"+(1 + 2/2 +8*5));//這裡可以看出是先乘除並且取餘數後加減 //比較正負號以及乘除運算優先順序順序 int b = -5+2*3-2; System.out.println("b:"+(-5+2*3-2)); //這裡可以看出先乘除後正負 自增自減運算子:在Java中,需要注意的是,a++和++a,從字面意思來看,倆者除了++位置不同,其他都是一樣,可是在java運算中,a++表示先賦值,再進行計算,而++a卻是先進行計算,再進行賦值,不管是a++,還是++a,裡邊的a都表示a = a + 1,就是執行a++或者++a時,後邊隱藏了一行程式碼a= a + 1; int a = 10; int b = a++; //a=a+1 執行完程式碼後,先賦值給b,再自增 System.out.println(a); int c = ++a;//執行程式碼前,先自增,再賦值 System.out.println(b+c); System.out.println(b); System.out.println(c); 2、邏輯運算子:Java中邏輯運算子主要包括與&& 或|| 非!() , //與and:倆個變數同時為真,結果則為真; // 或or:倆個變數有一真,結果則為真; // 非(取反):如果是真,則為假,如果是假,則為真; boolean a = true; boolean b = false; System.out.println("a && b:"+(a&&b)); System.out.println("a || b:"+(a||b)); System.out.println("!(a && b):"+(!(a&&b))); 面試題目: 短路執行 在操作邏輯運算子時,我們會遇到一種名為“短路”的情況,這就意味著只要能準確無誤的得出整個表示式真假的值,就不再進行表示式餘下的部分,因此,整個表示式靠後的部分有可能不被進行運算;以下程式碼表示: //短路執行 :如果變數d中,在與的情況下,前面(c<4)為真才會執行後邊(c++<4);如果前面為假,則不執行後邊;所以輸出結果為假false; int c = 5; boolean d = (c<4)&&(c++>4); System.out.println(c); System.out.println(d); //結果為false 3、關係運算符:關係運算符主要包括> < = >= <= == !=instanceof(不等於) //關係運算返回的結果 true false //取餘叫做模運算 int a = 3; int b = 2; int c = 4; System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b); 4、位運算子:異或運算子是用^符號表示,其運算規律為:倆個運算元的位中,首先轉換為二進位制之後,相比較,相同則結果為0,不相同則為1; //異或運算子 ^ int a = 1;//需要轉換二進位制:0001 int b = 2;//需要轉換二進位制:0010 System.out.println("a^b:"+(a^b)); //結果為3,二進位制為0011 5、條件運算子==三元運算子:條件運算子主要包括問號?和冒號:這倆個運算子, int score = 90; String type = score <60?"不及格":"及格"; System.out.println(type);//輸出及格 6、三元運算子:三元運算子包括+= -= *= /=等四個基礎運算子,在Java中,我們舉例說明,a+=b,這裡表示的是a=a+b; int i = 2; int j = 3; i+=j; System.out.println(i);//結果:5 7、位運算子瞭解就OK:包括& | ^ >> << boolean a =true; boolean b =false; boolean c = a&b; System.out.println(c); 問&&和&的區別? 答:倆者都是與的意思,都是需要全部為真,輸出的結果才能為真,但&&帶有短路功能,當表示式能準確的輸出結果時,則不再執行餘下表示式,而&,不管真假,依舊會執行,以下程式碼表示: //& int a =4; int b =2; boolean c = (a++>2)&(++b<5); System.out.println(c);//輸出結果ture //&& boolean d = (a++>2)&&(++b<2); System.out.println(c);//輸出結果false