妙用運算符,敲出高大上

運算符,處理數據的核心邏輯結構,大致可分爲:賦值運算符、算術運算符、關係運算符、邏輯運算符、條件運算符、括號運算符等。今天就來教小夥伴們如何巧妙且恰當地使用運算符,讓你的代碼看上去也像大佬們寫的那樣,有點B格。

妙 · 賦值運算符

在編程世界裏,等於號(=),它不再是我們熟悉的等於號,而是 賦值符號 ,等等,燈光對錯人了,這裏我們要說的是這個 三目運算符 ,屬於一種簡化的賦值運算符,利用運算動態選擇 ,合理運用可以減少很多簡單的判斷邏輯代碼。

公式:數據類型 變量 = 邏輯判斷 ? 邏輯成立選擇的值 : 邏輯不成立選擇的值

比如:用三目運算符簡化一個簡單的 if 語句(目的:把 a 、 b 中的最大值賦值給 c )

        int a = 10;
        int b = 5;
        //用 if 語句
        if (a > b) {
            int c = a;
        } else {
            int c = b;
        }
        //三目運算符
        int c = a > b ? a : b;

這種一步到位的感覺不得不讓我想起某電池廣告詞:一行更比六行強!

妙 · 算術運算符

算術運算符大家都知道:加(+)減(-)乘(*)除(/)還有取模(取餘數:%)

比如想要讓一個 int 數值增大 2 :

int a = 100;
a = a + 2;

那麼這種情況,可以簡寫成:

int a = 100;
a += 2;

代碼的B格是不是提高了那麼一丟丟?

這是利用了 算術運算符+賦值運算符,其他的幾個算術運算符也可以同理:

int a = 100;
a += 2;// a = a + 2;
a -= 2;// a = a - 2;
a /= 2;// a = a / 2;
a *= 2;// a = a * 2;
a %= 2;// a = a % 2;

妙·邏輯運算符

邏輯運算符包括:與(&) 、短路與(&&) 、 或(|) 、 短路或(||)、非(!)

與(&):邏輯條件全都爲 true 時,纔會返回 true ,否則返回 false

短路與(&):逐個判斷邏輯條件,遇到第一個 false 時直接返回 false ,不會進行後面的判斷和運算,所有邏輯條件都爲 true 時纔會返回 true

或(|):邏輯條件全都爲 false 時,纔會返回 false,否則返回 true

短路或(||):逐個判斷邏輯條件,遇到第一個 true 時直接返回 true,不會進行後面的判斷和運算,所有邏輯條件都爲 false 時纔會返回 false

用法如下:

比如我們想要用 if 語句判斷一個人即是 男性 又是 30歲以下:

        String sex = "男";
        int age = 20;
        if (sex.equals("男")) {
            if (age <= 30) {
                System.out.println("if嵌套結果:此人爲男性!");
            }
        }

        if (sex.equals("男") & age <= 30) {
            System.out.println("邏輯運算符結果:此人爲男性!");
        }

可以看到,同樣是用 if 語句,如果使用了 邏輯運算符 與(&) 的話,代碼瞬間就變得更加清晰明朗,並且有更好的執行性能。

短路與(&&)的小妙用:

很多時候我們需要對某個變量或者對象先進行判空操作,再去做某些東西操作或者判定,這個時候短路與的優勢一下子就出來了!

        String str = "abc";
        if (str != null) {
            if (str.equals("abc")) {
                str = "666";
            }
        }

        if (str != null && str.equals("abc")) {
            str = "666";
        }

可以看到,在需要先判斷 str 不爲空的情況下判斷 str 是否等於 “abc” ,可以把往常的兩個 if 縮減成一個!

短不短路的區別:

短路與(或)和 普通與(或)有什麼區別呢?(或 和 短路或 同理)

        //輸出結果:拋出異常
        System.out.println(5 < 1 & 1 / 0 == 0);

        //輸出結果:false
        System.out.println(5 < 1 && 1 / 0 == 0);

可以看到, 5<1 結果是 false 1/0 結果是 拋出異常(0不能作爲除數)

同樣的兩個判斷條件,一個用的是 與(&),一個用的是 短路與(&),結果就完全不一樣了!

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