简化代码——判断一个整数是否为奇数
判断一个整数是否为奇数
一般情况
学过Java的同学都知道判断一个整数是否时奇数极为简单。别急,相信大部分同学都是这样编写的:
public class xiaogao {
static boolean judge(int i) {
if (i % 2 == 1)
return true;
else
return false;
}
public static void main(String[] args){
int i=3;
if(judge(i))
System.out.print("奇数");
else
System.out.print("偶数");
}
}
这就是最简的代码了么? 我们都知道功能相同情况下,代码越简洁越好
从上面代码可以看出函数定义的是布尔值,这样我们就可以将代码简单优化一下:
public class xiaogao {
static boolean judge(int i) {
return i%2==1;
}
public static void main(String[] args){
int i=2;
if(judge(i))
System.out.print("奇数");
else
System.out.print("偶数");
}
}
让我们看看上面的代码有没有问题?
你们有没有发现,如果i值为负数呢?
这时我们再将它修改下:
public class xiaogao {
static boolean judge(int i) {
return i%2!=0;
}
public static void main(String[] args){
int i=2;
if(judge(i))
System.out.print("奇数");
else
System.out.print("偶数");
}
}
然而,这就是最简了么?
假设这时客户觉得取模操作比较慢,有什么更快的方法么?
对C语言有较深入体会的人会想到二进制,对。就是移位操作。
public class xiaogao {
static boolean judge(int i) {
return (i&1)==1;
}
public static void main(String[] args){
int i=2;
if(judge(i))
System.out.print("奇数");
else
System.out.print("偶数");
}
}
这样取模是不是就快了?
理论上是快了,但实际代码运行的时间是差不多的,那我们为什么要用移位运算呢?
当我们在执行逻辑位操作时使用移位运算符,而不是数学运算。 它可用于速度,在处理2的幂的操作数时明显快于除法/乘法,但代码的清晰度通常优于原始速度。同时它也可用于加密、解密。