Skip to content

Java 解惑 -01:奇数性

下面的方法验证参数是否是奇数。

java
public static boolean isOdd(int i) {
    return i % 2 == 1;
}

除 2 的余数是 1 说明是奇数,貌似没有问题。但其在四分之一的时间里返回的是错误的值,因为负数奇数的余数是 -1

修正起来很简单,只需改成取反的方法即可:

java
public static boolean isOdd(int i) {
    return i % 2 != 0;
}

若想获得更好的性能,则可用与操作符(&)来代替取余:

java
public static boolean isOdd(int i) {
    return (i & 1) != 0;
}