12、筆記:運算子的優先順序
阿新 • • 發佈:2021-10-29
到目前為止,我們已經學習到了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