1. 程式人生 > >Java複習(3)運算子和表示式

Java複習(3)運算子和表示式

運算子主要是指進行特定操作的符號。如:+。
表示式是指用運算子連線起來的式子叫做表示式。如:20+5,a+b。
Java世界中運算子主要分為以下幾類:算術運算子、賦值運算子、比較運算子、邏輯運算子和三元運算子。
一、 算術運算子
加(+):四則運算的加法
減(-):四則運算的劍法
乘(*):四則運算的乘法
除(/):四則運算的除法
取模(%):常說的求餘數
注意事項:

  1. 一旦運算當中有不同型別的資料,那麼結果將會是資料類型範圍大的那種。
  2. 只有對於整數的除法來說,取模運算才有餘數的意義。
  3. 在進行運算時,首先計算得到表示式的結果,然後在進行後續操作。
  4. 四則運算的加號對於char型別來說,在計算之前,char型別會被提升為int型別,然後在進行計算。
  5. 對於字串String型別來說,加號代表字串連線操作。並且任何資料型別和字串進行連線操作,結果都會變成字串。
    可以看一下程式碼示例:

    public class TestOperator {
    public static void main(String[] args){
        //兩個常量之間的數學運算
        System.out.println(20+30);
        //兩個變數之間的數學運算
        int a = 20;
        int b = 5;
        System.out.println(a-b);
        //並且變數和常量之間可以混合使用
        System.out.println(a*10);
    
        int x = 10;
        int y = 3;
        //因為x和y都是整數,除數的結果也是整數。所以結果會進行截斷。
        int result1 = x/y;
        System.out.println(result1);
    
        int result2 = x%y;
        System.out.println(result2);
        //浮點數也可以進行運算
        double result3 = x + 2.5;
        System.out.println(result3);
    }
    }

    算術運算子還有兩種特殊的運算子,就是自增運算子(++)、自減運算子(--)。
    基本含義:
    自增運算子讓變數的值增加1,自減運算子是讓變數的值減1。
    使用格式:
    寫在變數名稱前,或者寫在變數名稱之後。如:++num或num++。
    使用方式:

  6. 單獨使用:不和其他任何操作混合,自己獨立稱為一個步驟。
  7. 混合使用: 和其他操作混合,例如與賦值混合,或者與列印操作混合等。
    兩種使用方式區別:
  8. 在單獨使用的時候,前++和後++沒有任何區別。也就是說++num和num++結果是完全一樣的。
  9. 在混合使用的時候,有重大區別:
    A. 如果是前++,那麼變數馬上加1,然後拿著結果進行使用。可以稱作,先加後用。
    B. 如果是後++,那麼首先使用變數本來的數值,然後在讓變數加1,可以稱作,先用後加。
    注意事項:
    只有變數才能使用自增、自減運算子,常量不可用。
    請看以下示例:

    public class TestPlus {
    public static void main(String[] args) {
        //字串型別的變數基本使用
        //資料型別 變數名稱 = 資料值;
        String str1 = "Hello";
        System.out.println(str1);
        System.out.println("Hello" + "World");
    
        String str2 = "Java";
        System.out.println(str2 + 20);
    
        //優先順序問題
        System.out.println(str2 + 20 + 30);
    
        //自增自減
        int num1 = 10;
        System.out.println(num1);
        ++num1;//單獨使用,前++
        System.out.println(num1);
        num1++;//單獨使用,後++
        System.out.println(num1);
    
        int num2 = 20;
        //混合使用,前++,變數馬上變為21,然後列印輸出
        System.out.println(++num2);
        System.out.println(num2);
    
        int num3 = 30;
        //混合使用,後++,先使用變數原值30,列印輸出,然後變數加1,變為31.
        System.out.println(num3++);
        System.out.println(num3);
    
        int num4 = 40;
        //混合使用,前--,變數馬上變為39,然後賦值result1
        int result1 = --num4;
        System.out.println(result1);
        System.out.println(num4);
    
        int num5 =50;
        //混合使用,後--,先使用變數原值50,賦值result2,然後變數減1,變為49.
        int result2 = num5--;
        System.out.println(result2);
        System.out.println(num5);
    
        int x = 10;
        int y = 20;
        int result3 = ++x + y--;
        System.out.println(result3);
        System.out.println(x);
        System.out.println(y);
    }
    }

    二、 賦值運算子
    賦值運算子分為兩種:
    一是基本賦值運算子:就是一個等號“=”,代表將右側的資料交給左側的變數。
    二是複合賦值運算子:
    +=: 例如 a += 1 相當於 a = a + 1
    -=: 例如 b -= 4 相當於 b = b - 4
    =: 例如 c = 5 相當於 c = c * 5
    /=: 例如 d /= 6 相當於 d = d / 6
    %=: 例如 e %= 7 相當於 e = e % 7
    注意事項:

  10. 只有變數才能使用賦值運算子,常量不能進行賦值。
  11. 複合賦值運算子其中隱含了一個強制型別轉換。
    請看示例:

    public class TestEqual{
    public static void main(String[] args) {
        int a = 10;
        a += 5;
        System.out.println(a);
    
        int x = 10;
        x %= 3;
        System.out.println(x);
    
        byte num = 30;
        //num += 5 相當於 num = num +5;
        //也就是byte = byte + int;
        //右邊表示式會先把byte自動轉換稱為int,最後進行強制轉換成byte.
        //所以複合賦值運算子幫我們做了一個強制型別轉換
        num += 5;
        System.out.println(num);
    }
    }

    三、 比較運算子
    == 比較符號兩邊資料是否相等,相等結果就是true。
    < 比較符號左邊的資料是否小於右邊的資料,如果小於,結果就是true。

    比較符號左邊的資料是否大於右邊的資料,如果大於,結果就是true。
    <= 比較符號左邊的資料是否小於等於右邊的資料,如果小於等於,結果就是true
    = 比較符號左邊的資料是否大於等於右邊的資料,如果大於等於,結果就是true。
    != 比較符號兩邊資料是否相等,不相等結果就是true。

注意事項:

  1. 比較運算子的結果一定是一個boolean值,成立就是true,不成立就是false。
  2. 如果進行多次判斷,不能連著寫。
    public class TestCompare {
    public static void main(String[] args) {
        System.out.println(10>5);
        iint num1 = 10;
        int num2 = 15;
        System.out.println(num1 < num2);
        System.out.println(num1 >= 30);
        System.out.println(num2 <= 50);
        System.out.println(num2 <= 15);
        System.out.println(num2 == 15);
        System.out.println(num1 != 15);
        //java不支援連著進行比較,可以使用下節的邏輯比較符進行。
        //System.out.println(4 < num1 < 20);
    }
    }

    四、 邏輯運算子
    與 && 全都是true,才是true; 否則就是false
    或 || 至少一個是true, 就是true; 全都是false,才是false
    非 ! 本來是true,變成false;本來是false,變成true。

注意事項:

  1. 邏輯運算子只能用於Boolean值。
  2. 與、或需要左右各自有一個Boolean值,但是取反只要有唯一的一個Boolean值即可。
  3. 與、或兩種運算子,如果有多個條件,可以連續寫。
  4. 與、或具有短路效果:如果根據左邊已經可以判斷得到最終結果,那麼右邊的程式碼將不再執行,從而節省效能。
    五、 三元運算子
    Java中根據資料的多少可以分為:
    一元運算子: 只需要一個數據就可以進行操作的運算子。例如:取反!、自增++、自減--
    二元運算子: 需要兩個資料才可以進行操作的運算子。例如:加減乘除
    三元運算子: 需要三個資料才可以進行操作的運算子。

格式: 資料型別 變數名稱 = 條件判斷 ? 表示式A : 表示式B
流程:
首先判斷條件是否成立:
如果成立為true,那麼將表示式A的值賦給左側的變數
如果不成立為false,那麼將表示式B的值賦給左側的變數

注意事項:

  1. 必須同時保證表示式A和表示式B都符合左側資料型別的要求。
  2. 三元運算子的結果必須被使用。

    public class TestThreeVar {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max;
        //判斷a>b是否成立,如果成立將a的值賦給max,如果不成立將b的值賦給max.
        max = a > b ? a : b;
        System.out.println(max);
    
        //兩個表示式的值必須同時符合左側資料型別的要求。
        //int result = 3 > 4 ? 2.4 : true;
    
        //並且三元表示式不能直接使用
        //a > b ? a : b 
    }
    }