菜鳥、普通、老鳥程式猿如何寫奇數判斷?--位操作符妙用
阿新 • • 發佈:2019-08-30
背景:
在進行程式開發時,經常需要通過判斷一個整數是奇數還是偶數,來實現一些特殊的效果和功能,例如,讓表格的奇數行顯示一種背景顏色,偶數行顯示另一種背景顏色。那麼該如何判斷一個整數是奇數還是偶數呢?
讓我們來看一下不同的程式猿都是怎麼反應:
1. 菜鳥程式猿
程式碼就是一個擼字:
public class TestOdd { public static void main(String[] args) { int oddNum=153; System.out.println(isOdd(oddNum)); int evenNum=9284; System.out.println(isOdd(evenNum)); } public static boolean isOdd(int i){ return i % 2 == 1; } }
搞定!
2. 普通程式猿
上面的程式碼一看就是菜鳥寫的,都沒有考慮int的取值範圍,看老孫俺的!
public class TestOdd { public static void main(String[] args) { /** * A constant holding the minimum value an {@code int} can * have, -2<sup>31</sup>. @Native public static final int MIN_VALUE = 0x80000000; * A constant holding the maximum value an {@code int} can * have, 2<sup>31</sup>-1. @Native public static final int MAX_VALUE = 0x7fffffff; */ int oddNum=Integer.MAX_VALUE; System.out.println(isOdd(oddNum)); int evenNum=Integer.MIN_VALUE; System.out.println(isOdd(evenNum)); } public static boolean isOdd(int i){ return i % 2!=0;//如果一個數是偶數,就算是負數整除2餘數也為0 } }
老鳥程式猿
現在的年輕人都不懂的珍惜呀!%2 很浪費資源的,使用&比較省事。
public class TestOdd { public static void main(String[] args) { /** * A constant holding the minimum value an {@code int} can * have, -2<sup>31</sup>. @Native public static final int MIN_VALUE = 0x80000000; * A constant holding the maximum value an {@code int} can * have, 2<sup>31</sup>-1. @Native public static final int MAX_VALUE = 0x7fffffff; */ int oddNum=Integer.MAX_VALUE; System.out.println(isOdd(oddNum)); int evenNum=Integer.MIN_VALUE; System.out.println(isOdd(evenNum)); } public static boolean isOdd(int i){ return (i & 1)!=0;//1的十六進位制為0x00000001,本質是取二進位制的最後一位的值 } }
另外記住:除法的話,如是2的x次方的話,使用移位更快哦。
總結:
判斷奇數和偶數在實際生產和生活中也經常使用,具有重大意義,因此程式中也經常需要對奇數和偶數進行處理,例如在使用迴圈輸出資訊時,可以在迴圈變數是奇數時,輸出一種符號,是偶數時輸出另一種符號。
參考資料
【1】java解惑
【2】https://zhidao.baidu.com/special/view?id=ee785a24626975510400