javascript 同学如果也有需要可以加我QQ:3289360550
package com.slwlar.recruit;
// 模拟场景是一个学生报的课外活动
public class Operate {
// 所有状态接口
public interface Status {
public static short 乒乓球 = 1<< 0;
public static short 篮球 = 1<< 1;
public static short 羽毛球 = 1<< 2;
public static short 舞蹈 = 1<< 3;
public static short 街舞 = 1<< 4;
public static short 电子竞技 = 1<< 5;
}
public static short mark = 0; // mack就是记录多个状态的变量
public static void addStatus(short state) { // 添加状态
mark = (short) (mark | state); // 或运算符: 只要该位有一个是1那结果就是1
}
public static void delStatus(short state) { // 删除状态
mark = (short) (mark ^ state); // 按位异或运算符: 两个相同的位置比较,如果相同就是0,不同为1
}
public static boolean isFlag(short state) { // 判断该状态是否为true
return (mark & state) > 0 ? true : false; // 按位与运算符:都为1结果才是1,只要有一个不是1,结果就为0
}
public static void main(String[] args) {
// 先让孩子报舞蹈
addStatus(Status.舞蹈);
// 查看是否报了舞蹈
System.out.println(isFlag(Status.舞蹈));
// 再报一个电子竞技
addStatus(Status.电子竞技);
// 查看是否报了舞蹈
System.out.println(isFlag(Status.电子竞技));
// 去掉报的舞蹈
delStatus(Status.舞蹈);
// 查看舞蹈和电子竞技的状态
System.out.println(isFlag(Status.舞蹈));
System.out.println(isFlag(Status.电子竞技));
}
}