運算符和表達式詳解


 運算符和表達式

 

想要更多面試題和學習資料的可以私聊聯系我,大家一起交流學習!

 

1. 算數運算

1.1. 使用%運算符

Java算術運算符除了通常的加(+)、減(-)、乘(*)、除(\)之外,還包括取模運算(%)和自增(++)及自減(--)運算。+,-,*,/ 比較簡單,實驗一下即可。

取模運算(%)意為取余數,只能適用於整數及char類型。示例代碼如下所示:

copytextpop-up

  1. // 輸出255除以8所得的余數。
  2. int n = 225; 
  3. System.out.println(n % 8);  //結果為1

// 輸出255除以8所得的余數。

int n = 225;

System.out.println(n % 8);  //結果為1

1.2. 使用“++”和“--”運算符

Java的自增運算符(++)和自減運算符(--)繼承自C++,可以使變量的值加1或減1,但其寫在變量前和變量后有不同的效果:

  1. 如果寫在變量前,表示在使用這個變量之前加1或減1
  2. 如果寫在變量后,表示這個變量使用完之后再加1或減1

示例代碼如下所示:

copytextpop-up

  1. int a = 10, b = 20;
  2. int c1 = a++; // 先將a的值賦給c1,然后a再自加
  3. int c2 = ++b; // 先將b的值自加,然后再賦給c2
  4. System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2);
  5. // 輸出的結果為: a=11, b=21, c1=10, c2=21

int a = 10, b = 20;

int c1 = a++; // 先將a的值賦給c1,然后a再自加

int c2 = ++b; // 先將b的值自加,然后再賦給c2

System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2);

// 輸出的結果為: a=11, b=21, c1=10, c2=21

2. 關系運算

2.1. 使用關系運算符

Java中的關系運算符用於判斷數據之間的大小關系,包括大於(>)、小於(<)、大於等於(>=)、小於等於(<=)、等於(==)、不等於(!=) 六個運算符。

在實際應用中常常使用,假設現在想實現轉帳功能,輸入轉帳的金額,需要判斷所轉帳的金額是否大於當前帳戶的金額,那結果只有兩個,大於或不大於,在java語言中,使用boolean類型來表示這種是否的狀態,如果關系成立為true,否則為false。示例代碼如下所示:

copytextpop-up

  1. int max = 10; 
  2. int num = 9; 
  3. boolean b1 = max > 15; 
  4. boolean b2 = num%2  ==  1; 
  5. System.out.println(b1);  // 結果為false
  6. System.out.println(b2);  // 結果為true

int max = 10;

int num = 9;

boolean b1 = max > 15;

boolean b2 = num%2  ==  1;

System.out.println(b1);  // 結果為false

System.out.println(b2);  // 結果為true

3. 邏輯運算

3.1. 邏輯運算

前面的關系運算符是用於比較兩個數值之間的大小關系的, 而邏輯運算符是用來進行邏輯運算的,它是建立在關系運算的基礎之上的。當兩個關系運算需要兼顧考慮時,可以使用邏輯運算符。

邏輯運算符包括:與(&&)、或(||)和非(!)。參與邏輯運算的變量或表達式都是boolean類型,運算結果也為boolean類型。邏輯運算規則如下圖 - 4所示:

 

- 4

通過分析可以看出:

  1. 當變量b1和變量b2同時為true時,&&表達式為true。
  2. 當變量b1和變量b2有一個為true時,||表達式為true。
  3. !只有一個表達式,當b1為true時,!b1為false,b1為false時,!b1為true。

3.2. 使用“&&”運算符

兩個boolean變量參與“&&”運算時,只有當兩個變量均為true的時,運算結果才為true,否則結果為false。示例代碼如下所示:

copytextpop-up

  1. int score = 80; 
  2. boolean b = score >= 60 && score < 90; 
  3. System.out.println(b);  
  4. // 結果為true,因為score的值同時滿足大於等於60和小於90這兩個條件,邏輯表達式“score >= 60”和“score < 90”的結果均為true,所以&&運算的結果即為true。

int score = 80;

boolean b = score >= 60 && score < 90;

System.out.println(b);  

// 結果為true,因為score的值同時滿足大於等於60和小於90這兩個條件,邏輯表達式“score >= 60”和“score < 90”的結果均為true,所以&&運算的結果即為true。

3.3. 使用“||”運算符

兩個boolean變量參與“||”運算時,當兩個變量有一個為true時,結果即為true,只有當兩個變量均為false時結果為false。示例代碼如下所示:

copytextpop-up

  1. boolean flag = true
  2. int n = 200; 
  3. boolean b1 = flag || (n >= 0 && n < 100); 
  4. System.out.println(b1); 
  5. // 結果為true,上面這段代碼中,表達式“flag || (n >= 0 && n < 100)”的含義是:當flag為true或者n在0到100之間(n大於等於0且小於100)時,結果為true,否則為false。根據flag和n的值,最后的運算結果為true。

boolean flag = true;

int n = 200;

boolean b1 = flag || (n >= 0 && n < 100);

System.out.println(b1);

// 結果為true,上面這段代碼中,表達式“flag || (n >= 0 && n < 100)”的含義是:當flag為true或者n在0到100之間(n大於等於0且小於100)時,結果為true,否則為false。根據flag和n的值,最后的運算結果為true。

 

3.4. 使用“!”運算符

“!”運算相對簡單,只有一個boolean變量參與運算,運算的值與該變量相反,變量為true時結果為false,變量為false是結果為true。示例代碼如下所示:

copytextpop-up

  1. boolean flag = true
  2. int n = 200; 
  3. boolean b = !flag || (n >= 0 && n < 100); 
  4. System.out.println(b); 
  5. // 結果為false,上面這段代碼中,表達式“!flag || (n >= 0 && n < 100)”的含義是:當flag為false或者n在0到100之間(n大於等於0且小於100)時,結果為true,否則為false。根據flag和n的值,最后的運算結果為false。

boolean flag = true;

int n = 200;

boolean b = !flag || (n >= 0 && n < 100);

System.out.println(b);

// 結果為false,上面這段代碼中,表達式“!flag || (n >= 0 && n < 100)”的含義是:當flag為false或者n在0到100之間(n大於等於0且小於100)時,結果為true,否則為false。根據flag和n的值,最后的運算結果為false。

3.5. 關於“短路邏輯”的問題

Java邏輯運算中的&&和||有短路的特性,當第一個關系表達式就可以判斷出整個表達式的結果時,就不會再去判斷后面的第二個表達式。

  1. 對於“&&”,當第一個操作數為false時,將不會判斷第二個操作數,因為此時無論第二個操作數是什么最后的結果一定是false;
  2. 對於“||”,當第一個操作數為true時,將不會判斷第二個操作數,因為此時無論第二個操作數為何,最后的運算結果一定是true。

示例代碼如下所示:

copytextpop-up

  1. int i = 100, j = 200;
  2. boolean b1 = (i > j) && (i++ > 100);
  3. System.out.println(b1);  // 結果為:false
  4. System.out.println(i);   // 結果為:100,發生短路,i++不會被執行
  5. boolean b2 = i > 0 || j++ > 200;
  6. System.out.println(b2);  // 結果為:true
  7. System.out.println(j);   // 結果為:200,發生短路,j++不會被執行


免責聲明!

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



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