知识点:
java中,当取余操作返回一个非零的结果时,他与左操作数具有相同的正负号。
问题:
如何判断一个int值为奇数isOdd
//判断num的奇偶性
public static boolean isOdd(int num){
return num % 2 == 1;
}
解决方法:
根据上面提到的知识点,上面的代码是有bug,它在1/4的情况下,返回的结果是错误的。当num为负的奇数的时候,返回的结果是-1而不是1。
所以,进行一下简单的修改:
// 判断num的奇偶性
// 常规操作
public static boolean isOdd(int num){
return num % 2 != 0;
}
// 位操作(优化操作)
public static boolean isOdd(int num){
return (1 & num) != 0;
}
/*
按常规来说,整除和取余操作与其它的算术和逻辑操作相比慢一些。
仓促的优化是不好的。
好与不好,取决实际的情况。可读性、易维护性等等。。。
*/