1. 程式人生 > 實用技巧 >第二天:運算子

第二天:運算子

運算子

  • 運算子:進行特定操作的符號,例如:+
  • 表示式:用運算子來接起的式子,例如: 20+5 又例如:a+

1. 四則運算子

  1. 加:+
  2. 減:-
  3. 乘:*
  4. 除:/

2.取模(求餘數):%

注意事項:

  1. 一旦運算當中有不同型別的資料,那麼結果將會是資料範圍大的那種
  2. 對於一個整數的表示式來說,除法用的是整除,整數除以整數,結果任然是整數。只看商,不看餘數
  3. 只有對於整數的除法來說,取模運算才有餘數的意義

例項

public class Demo04Operator {
    public static void main(String[] args) {
        // 兩個常量之間可以進行數學運算
        System.out.println(20 + 30); // 50

        // 兩個變數之間也可以進行數學運算
        int a = 20;
        int b = 30;
        System.out.println(a - b); // -10

        // 變數和常量之間可以進行混合使用
        System.out.println(a * 10); // 200

        int x = 10;
        int y = 3;
        int result1 = x / y;
        System.out.println(result1); // 3

        int result2 = x % y;
        System.out.println(result2); // 1

        // int + double --> double + double = double
        double result3 = x + 2.5;
        System.out.println(result3);
    }
}

3. 四則運算當中的加號"+"

  1. 對於數值來說,那就是加法
  2. 對於字元char來說,在計算之前,char會被提升成為int,然後計算。char型別字元,和int型別數字之間的對照關係表:ASCII、Unicod
  3. 對於字串String(首寫字母大寫,並不是關鍵字)來說加號代表連線操作

四則運算當中的加號"+" 例項

public class Demo05Plus {
    public static void main(String[] args) {
        // 字串型別的變數基本使用
        // 資料型別 變數名稱 = 資料值
        String str1 = "Hello";
        System.out.println(str1); // Hello

        System.out.println("hello" + "world"); // helloworld

        String str2 = "java";
        // String + int -->String
        System.out.println(str2 + 20); // java20

        // 優先順序問題
        // String + int + int
        // String + int
        // String
        System.out.println(str2 + 20 + 30); // java2030

        System.out.println(str2 + (20 + 30)); // java50
    }
}

4. 自增自減運算子

  • 自增運算子:++
  • 自減運算子:--
  1. 基本含義:讓一個變數張一個數字1,或者讓一個變數降一個數字1
  2. 使用格式:寫在變數名稱之前,或者在變數名稱之後,例如:++num,也可以num++
  3. 使用方法:
    • 單獨使用:不和其他任何操作混合,自己成為一個步驟
    • 混合使用:和其他操作混合,例如與賦值混合,或者與列印操作混合,等等。。。
  4. 使用區別
    • 在單獨使用的時候,前++和 後++沒有任何區別,也就是:++num;和num++;完全一樣
    • 在混合使用時,有巨大區別
      • 如果是【前++】,那麼變數立刻馬上+1,然後拿著結果進行使用。【先加後用】
      • 如果是【後++】,那麼首先使用變數本來的數值,然後讓變數+1。【先用後加】

注意事項

  • 只有變數才能使用自增自減操作,常量不可發生改變,所以不能使用

自增自減例項

public class Demo06Operator {
    public static void main(String[] args) {
        int num1 = 10;
        System.out.println(num1); // 10
        ++num1; // 單獨使用,前++
        System.out.println(num1); // 11
        num1++; // 單獨使用,後++
        System.out.println(num1); // 12
        System.out.println("==============");

        // 與列印操作混合使用的時候
        int num2 = 20;
        // 混合使用,先++,變數立刻馬上變成21,然後列印結果
        System.out.println(++num2); // 21
        System.out.println(num2); // 21
        System.out.println("==============");

        int num3 = 30;
        // 混合使用,後++,首先使用變數本來的30,然後再讓變數+1得到31
        System.out.println(num3++); // 30
        System.out.println(num3); // 31
        System.out.println("==============");

        int num4= 40;
        // 和賦值操作混合
        int result1 = --num4; // 混合使用,前--,變數立刻馬上-1變成39,然後賦值給result1
        System.out.println(result1); // 39
        System.out.println(num4); // 39
        System.out.println("==============");

        int num5 = 50;
        // 混合使用,後--,首先把本來的數字50交給result2,然後我自己再-1變成49
        int result2 = num5--;
        System.out.println(result2); // 50
        System.out.println(num5); // 49
        System.out.println("==============");

        int x = 10;
        int y = 20;
        int result3 = ++x + y--; // 11 + 20 = 31
        System.out.println(result3); // 31
        System.out.println(x); // 11
        System.out.println(y); // 19

        // 30++; // 錯誤
    }
}

5. 賦值運算子分為

  1. 基本運算子,就是一個等號"=",代表將右側的資料交給左側的變數

    int a = 30;
    
  2. 複合賦值運算子

     +=      a += 3      相當於     a=a+3
     -=      b -= 4      相當於     b=b-4
     *=      c *= 5      相當於     c=c*5
     /=      d /= 6      相當於     d=d/6
     %=      e %= 7      相當於     e= e%7
    

注意事項

  1. 只有變數才能進行賦值運算,常量不能進行賦值

  2. 符合運算子其中隱含一個強制型別轉換

賦值運算子 例項

public class Demo07Operator {
    public static void main(String[] args) {
        int a = 10;
        a += 5;
        System.out.println(a); // 15

        int x = 10;
        x %= 3;
        System.out.println(x); // 1

        // 50 = 30; // 常量不能進行賦值,不能寫在賦值運算子的左邊,錯誤寫法

        byte num = 30;
        num += 5;
        // num = num + 5
        // num = byte + int
        // num = int + int
        // num = int
        // num = (byte)int
        System.out.println(num); // 35
    }
}

6. 比較運算子

  1. 大於 >
  2. 小於 <
  3. 大於等於 >=
  4. 小於等於 <=
  5. 相等 == 【兩個等號連寫才是相等,一個等號代表的是賦值】
  6. 不相等 !=

注意事項

  1. 比較運算子的結果一定是一個boolean值,成立就是true,不成立就是false
  2. 如果進行多次判斷,不能進行連線寫

比較運算子 例項

public class Demo08Operator {
    public static void main(String[] args) {
        System.out.println(10 > 5); // true
        int num1 = 10;
        int num2 = 12;
        System.out.println(num1 < num2); // true
        System.out.println(num2 >= 100); // false
        System.out.println(num2 <= 100); // true
        System.out.println(num2 <= 12); // true
        System.out.println("=============");

        System.out.println(10 == 10); // true
        System.out.println(20 != 25); // true
        System.out.println(20 != 20); // false

        int x = 2;
        // System.out.println(1 < x < 3); // 錯誤
    }
}

7.邏輯運算子

  1. 與(並且)&& 全都是true,才是true,否則就是false
  2. 或(或者)|| 至少一個是true,就是true;全是false,才是false
  3. 非(取反)! 本來是true,變成false;本來是false,變成true

注意事項

  1. 邏輯運算子只能用於Boolean值

  2. 與、或需要左右各自一個boolean值,但是取反只有一個唯一的一個Boolean值即可

  3. 與、或兩種運算子,如果有多個條件。可以連續寫

  4. 與"&&",或"||",具有短路效果,如果根據左邊已經可以判斷得到的最終結果,那麼右邊的程式碼將不再執行,從而節省一定的效能

  5. tips:

    對於 1 < x < 3的情況,應該拆成兩個部分,然後使用與運算子連線起來
    int x = 2;
    1 < x && x < 3;
    

邏輯運算子

public class Demo09Logic {
    public static void main(String[] args) {
        System.out.println(true && false); // false
        System.out.println(true && true); // true
        System.out.println("==============");

        System.out.println(true || false); // true
        System.out.println(true || true); // true
        System.out.println(false || false); // false
        System.out.println("==============");

        System.out.println(true); // true
        System.out.println(!true); // false
        System.out.println("==============");

        int a = 10;
        System.out.println(3 > 4 && ++a < 100); // false
        System.out.println(a); // 10
        System.out.println("==============");

        int b = 20;
        System.out.println(3 < 4 || ++b < 100); // true
        System.out.println(b); // 20
    }
}

8. 三元運算子

  1. 三元運算子:需要三個資料才可以進行的運算子
  2. 格式:資料型別 變數名稱 = 條件判斷 ? 表示式A : 表示式B
  3. 流程:
    • 首先判斷條件是否成立
    • 如果成立為true,那麼表示式A的值賦值給左側的變數
    • 如果不成立為false,那麼將表示式B的值賦值給左側的變數

注意事項

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

三元運算子 例項

public class demo10Operator {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        // 資料型別 變數名稱 = 條件判斷 ? 表示式A :表示式B
        // 判斷a>b是否成立,如果成立將a的值賦值給max
        int max = a > b ? a : b; // 最大值的變數
        System.out.println(max); // 20

        // int result = 3>4 ? 2.5 :10; // 錯誤寫法
        System.out.println(a > b ? a : b); // 20

        // a > b ? a : b; // 錯誤寫法
    }
}