一道简单的面试题

今天看知乎上有一个人写了简单的面试题,感觉挺有意思,和大家分享一下。面试题很简单,判断一个数是不是奇数。

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;
    }
}


题目是简单了点,但是作为每一种不同的写法都体现了一个人的能力以及知识面。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值