今天看知乎上有一个人写了简单的面试题,感觉挺有意思,和大家分享一下。面试题很简单,判断一个数是不是奇数。
package com.yxc;
/**
* 下面的几种方法都可以实现判断一个数是不是奇数
* 针对第三种和第四种方法,有人说取模的效率会低于位运算
*/
public class SimpleFaceDemo {
public static void main(String[] args) {
//直接测试
//获取当前时间的毫秒数
System.out.println(isOdd1(23));
System.out.println(isOdd2(23));
System.out.println(isOdd3(23));
System.out.println(isOdd4(23));
}
/**第一种方法,简单的返回一个数是不是奇数*/
public static boolean isOdd1(int i){
if(i%2==1){
return true;
} else{
return false;
}
}
/**对方法1进行简单的简化*/
public static boolean isOdd2(int i){
return i%2==1;
}
/**如果我们测试一下-1,会发现它不是奇数 在数学概念中奇数应该是有正奇数和负奇数,所以对上面的代码还要进行一定改变*/
public static boolean isOdd3(int i){
//return i%2==1||i%2==-1;
//获取直接简化一点
return i%2!=0;
}
/**还有一种方法就是通过与运算,一个奇数转化为2进制以后,末尾一定是1,所以我们可以通过一个&运算来判断*/
public static boolean isOdd4(int i){
return (i&1)==1;
}
}
题目是简单了点,但是作为每一种不同的写法都体现了一个人的能力以及知识面。