建議可以由下往上讀 (先看結尾圖示,如果有興趣 再從頭看文章)
學過寫程式的人,大概都會記得,有邏輯運算元與位元運算這兩種東西
如果有印象,但是不知道我在說什麼的人可以參考 良格格的網頁上的說明
老實說,我在寫程式的時候,比較常用到的是邏輯運算(判斷 if else 條件),
位元運算倒是真的很少用到(聽說高手會使用這個東西來加快運算效率 or 建置平行運算)
所以如果真的要問我,位元運算可以幹嘛、要如何使用,我是真的不董
但是,最近我突然看到一種應用方式,覺得很有意思,也算是常見的功能
所以就記錄下,以防自己忘記
簡單的程式碼如下
public boolean isEven(int num){
if( num % 2 == 0 ){
println( num + " is Even"); return true;
} else {
println( num + " is not Even"); return false;
}
}
mainFunction () {
...
boolean bothAreEven_1 = isEven(3) && isEven(4) ; //參數為 3 與 4
println ("bothAreEven_1 is "+ bothAreEven_1 );
println(" ");
boolean bothAreEven_2 = isEven(7) & isEven(8) ; //參數為 7 與 8
println ("bothAreEven_2 is "+ bothAreEven_2 );
...
}
執行結果應當如下
3 is not Even
bothAreEven_1 is false
7 is not Even
8 is Even
bothAreEven_2 is false
從以上可以看出,如果使用 & 來判斷的話,前後兩個 isEven() function都會被執行
而如果使用 && 前面第一個 isEven() 回傳false的話,就不會執行後面那個
知道這個後,可以進一步應用的情境為
在某些情況雖然使用 & 或 && 產出最終結果是相同的,
但是依照需求的不同可以調整使用 & or &&
例如,
畫面要求輸入多個科目的成績 (成績 欄位 限制0~100分)
如果是使用 & 就可以一次把使用者輸入的值都檢查過,並顯示錯誤提示
如果是使用 && 就只會出現一個錯誤提示而已
(因為遇到false就會停止)