java运算符的使用
每当看到用一个变量 & | ~其他变量的代码,无论使用什么语言写的,我都会觉得高大上。今天我也来对这个用法掌握一下,下次也写写看似高端的代码。位运算符的使用主要是可以用来表示状态位,一个int在现在的计算机中通常由32位二进制位表示,也就一个int可以表示32个状态可以进行状态的判断.
int state=state&~MASK1; state|MASK2; 表示置状态位MASK2,不置MASK1.如何判断是否置了状态位MASK1, state&MASK1>>int ==0;
private static final int MASK_REQUERY = 1; //重新查询位
private static final int MASK_CAN_CHARGE = 2; //充值位
private static final int MASK_INSERT_INTO_NOTIFY = 3; //通知表位
private static final int STATE_REQUERY = 1 << MASK_REQUERY; //需要重试
private static final int STATE_CAN_CHARGE = 1 << MASK_CAN_CHARGE; //需要充值
private static final int STATE_INSERT_INTO_NOTIFY = 1 << MASK_INSERT_INTO_NOTIFY;
public void run(){
int state=0
state = state & ~STATE_CAN_CHARGE;
state = state | STATE_INSERT_INTO_NOTIFY;
state = state & ~STATE_REQUERY;
if (((state & STATE_CAN_CHARGE) >> MASK_CAN_CHARGE) == 1) {
//=0就是不需要充值;需要充值时逻辑处理
}
if (((state & STATE_INSERT_INTO_NOTIFY) >> MASK_INSERT_INTO_NOTIFY) == 1) {
//需要通知时逻辑处理
}
if (((state & STATE_REQUERY) >> MASK_REQUERY) == 1) {
//需要查询时逻辑处理
}
}