位状态原理及使用

一、什么是位状态

位状态就是将int/long数字的二进制来表示状态。

举个栗子:用int来说

int有32位,最多就可以来表示32种属性的状态。

二、场景

一切有多个属性的地方,比如招聘网站简历完整度,用户填了相应的信息就表示完成了某一些属性的绑定;再比如用户账号安全指数,绑定了电话、邮箱、安全问题。。。等等一系列。

                             

三、使用

运算符

| 表示绑定

^ 表示取消绑定

& 表示查询是否绑定

int status = 0;//默认全部为0,所有都没有绑定
int BIND_PHONE = 1L << 0;//第0位表示是否绑定手机,<<0表示左位移0位
int BIND_EMAIL = 1l << 1;//第1位表示是否绑定邮箱,<<1表示左位移1位
//用户绑定了手机,修改手机状态为绑定
status = status | BIND_PHONE;
//用户绑定了邮箱,修改邮箱状态为绑定
status = status | BIND_EMAIL;
//查询用户是否绑定邮箱
if((status & BIND_EMAIL) != 0){System.out.println("邮箱已绑定");
}else {System.out.println("邮箱未绑定");
}
//删除邮箱绑定,修改状态为未绑定
status = status ^ BIND_EMAIL

这里画一张图来理解更容易

四、工具类拿走不谢

 

    public final static Long BIND_PHONE = 1L << 0; //用户是否绑定了邮箱public final static Long BIND_EMAIL = 1L << 1; // 用户是否实名认证/*** 判断是否绑定值*/public static boolean hasState(long states, long value) {return (states & value) != 0;}/*** 添加状态*/public static long addState(long states, long value) {if (hasState(states, value)) {return states;}return (states | value);}/*** 删除状态*/public static long removeState(long states, long value) {if (!hasState(states, value)) {return states;}return states ^ value;}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部