背景:
在進行程序開發時,經常需要通過判斷一個整數是奇數還是偶數,來實現一些特殊的效果和功能,例如,讓表格的奇數行顯示一種背景顏色,偶數行顯示另一種背景顏色。那么該如何判斷一個整數是奇數還是偶數呢?
讓我們來看一下不同的程序猿都是怎么反應:
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