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) { //需要查询时逻辑处理 } }