位移运算记录多个状态

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.电子竞技));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lar_slw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值