谜题1:奇数性
isOdd方法用来判断输入参数i是否为奇数,结果会怎样呢?
public static boolean isOdd(int i){
return i % 2 == 1;
}
考察的是%(取余)运算符的使用,该操作符被定义为对于所
有的 int 数值 a 和所有的非零 int 数值 b,都满足下面的恒等式:
(a / b) * b + (a % b) == a ;
当isOdd方法传入的参数是负奇数时,返回依然是FALSE,但负奇数也是奇数,因此上述代码存在缺陷,因此在使用时,通常改为如下更符合该操作符的定义:
public static boolean isOdd(int i){
return i % 2 != 0;
}
另外取余和取模还有很多不同之处
取余:rem(5,2) = 1
rem(5,-2) = 1
rem(-5,2) = -1
rem(-5,-2) = -1
取模:mod(5,2) = 1
mod(5,-2) = -1
mod(-5,2) = 1
mod(-5,-2) = -1
综上来看二者却有不同,取余结果的正负与被除数相同,取模结果的正负与除数相同
还有当是浮点型时,先四舍五入再取余
例如:17%5.6 = 5;
还有一种情况例如:10%13 = 10;
-----------------------------------------------------------------
仔细研究发现一个小小运算符都如此的奇妙。。