運算符,處理數據的核心邏輯結構,大致可分爲:賦值運算符、算術運算符、關係運算符、邏輯運算符、條件運算符、括號運算符等。今天就來教小夥伴們如何巧妙且恰當地使用運算符,讓你的代碼看上去也像大佬們寫的那樣,有點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不能作爲除數)
同樣的兩個判斷條件,一個用的是 與(&),一個用的是 短路與(&),結果就完全不一樣了!