Java運算符的使用和規則

本篇文章爲本人學習筆記,如有錯誤,希望指正。

Java中運算符大致分爲以下幾類:

  • 算數運算符
  • 賦值運算符
  • 自增自減運算符
  • 關係運算符
  • 邏輯運算符
  • 三元運算符

1. 算數運算符

算數運算符包括: 作用
+ 加法運算,字符串連接運算
- 減法運算
* 乘法運算
/ 除法運算
% 取模運算,兩個數字相除取餘數
  • 注意:/%的區別:兩個數據做除法,/取結果的%取結果的餘數

    整數操作只能得到整數,要想得到小數,必須有浮點數參與運算

1.1 字符串的 + 操作

  • 當“+”操作中出現字符串時,這個”+”是字符串連接符,而不是算術運算。

    System.out.println("Aunero" + 123);
    //輸出結果爲Aunero123
    
  • 在”+”操作中,如果出現了字符串,就是連接運算符,否則就是算術運算。當連續進行“+”操作時,從左到右逐個執行。

    System.out.println(1 + 99 + "Aunero");
    //前兩個都是整型常量,會先相加,相加後再和字符串結合,輸出結果爲100Aunero
    
  • 在沒有字符串參與時,會直接相加

    System.out.println(1 + 'a');
    //此時單個字符a會取到ASCII碼值,輸出結果爲98
    

2. 賦值運算符

符號 作用 說明
= 賦值 a=10,將10賦值給變量a
+= 加後賦值 a+=b,將a+b的值給a
-= 減後賦值 a-=b,將a-b的值給a
*= 乘後賦值 a*=b,將a×b的值給a
/= 除後賦值 a/=b,將a÷b的商給a
%= 取餘後賦值 a%=b,將a÷b的餘數給a

2.1 底層細節-強轉

short s = 1;
s += 1; // 相當於 s = (short)(s + 1);
//我們知道,s = s + 1 在此處是會報錯的,因爲s爲short型,整型常量默認int型,這時候必須強轉才能保證s的類型不變。

System.out.println(s);//沒有報錯,結果是2
//建議:寫+=的時候,數據不要超出變量的取值範圍,否則數字會錯誤。

這裏其實就是隱式轉換的知識,詳細可以參照:https://www.jianshu.com/p/a1c0a8a0a054(四-1)
後面幾個運算符以此類推。

3. 自增自減運算符

符號 作用 說明
++ 自增 變量的值加1
自減 變量的值減1
  • ++和-- 既可以放在變量的後邊,也可以放在變量的前邊

3.1 單獨使用

  • 單獨使用的時候, ++和-- 無論是放在變量的前邊還是後邊,結果是一樣的。

3.2 參數操作的使用

  • 如果放在變量的後邊,先將該變量原本的值,取出來參與操作,隨後再進行自增(++),自減(–)。
int a = 10;
int b = a++;

// a = 11 
// b = 10
  • 如果放在變量的前邊,先對該變量做自增(++)或者自減(–),然後再拿變量參與操作。
int a = 10;
int b = ++a;

// a = 11;
// b = 11;

這裏的計算邏輯和C語言一樣。

  • 分享一道比較容易混淆面試題
int x = 10;
int y = x++ + x++ + x++;
System.out.println(x);    //輸出結果爲13
System.out.println(y);    //輸出結果爲33

分析:
這裏給y賦值時,x經歷了兩次自增,即:y = 10 + 11 + 12,y的結果爲33。
第三次自增在賦值結束後進行,即:x = 12 + 1。
所以結果爲13, 33。

4. 關係運算符 (比較運算符)

符號 說明
== a==b,判斷a和b的值是否相等,成立爲true,不成立爲false
!= a!=b,判斷a和b的值是否不相等,成立爲true,不成立爲false
> a>b,判斷a是否大於b,成立爲true,不成立爲false
>= a>=b,判斷a是否大於等於b,成立爲true,不成立爲false
< a<b,判斷a是否小於b,成立爲true,不成立爲false
<= a<=b,判斷a是否小於等於b,成立爲true,不成立爲false
  • 總結:比較運算符無論簡單還是複雜,結果都是 boolean 類型的 true 、false;

5. 邏輯運算符

符號 作用 說明
& 邏輯與 a&b,a和b都是true,結果爲true,否則爲false
| 邏輯或 a|b,a和b都是false,結果爲false,否則爲true
^ 邏輯異或 a^b,a和b結果不同爲true,相同爲false
! 邏輯非 !a,結果和a的結果正好相反
&& 短路與 作用和&相同,但是有短路效果
|| 短路或 作用和|相同,但是有短路效果
  • 短路效果
    • 邏輯與**&**,無論左邊真假,右邊都要執行。

    • 短路與**&&,如果左邊爲真,右邊執行;如果左邊爲假,右邊不執行**。

    • 邏輯或**|**,無論左邊真假,右邊都要執行。

    • 短路或**||,如果左邊爲假,右邊執行;如果左邊爲真,右邊不執行**

做個簡單總結:
&&|| 比較 “懶” ,只要左邊能直接判斷出邏輯結果,右邊則直接不運算。

  • 注意
    ! && || 這三個邏輯運算符比較常用
    優先級從高到低依次爲非、與、或

6. 三元運算符

  • 三元運算符語法格式:

    比較表達式 ? 表達式1 : 表達式2;
    
  • 計算規則:

    首先計算比較表達式的值

    如果值爲true表達式1的值就是運算結果

    如果值爲false表達式2的值就是運算結果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章