java基础:位运算用法之保存多选的表单项

一个多选的表单项,保存在数据库里面
1.如果选择范围固定,做字段合适
2.如果选择范围不固定,单列记录表合适。灵活,增加一个中间表,扩展性优于其余两种。
3.还有一种,将多选结果转变成字符串,用分号或者逗号隔开。效率低。查询麻烦。

位运算:这里用于多选状态,存储数据。
Int 32位,long 64位。超过64为建议用上面第三种方法。
一个字段可以解决,后期分析比较代码多一点。
扩展性不高,增加一个状态,要增加相关代码。

参考:
数据库设计——“多选状态标识”的处理
位运算(深入分析举例)
java中通过位运算实现多个状态的判断(我想找的)
java位运算与它的一个巧妙应用(带一个例子)
C#位运算的处理方法(权限管理中的权限运算)(我想找的)

public class WeiYunX {

    class eType {
        public final static int None        = 0;
        public final static int NeiXiao     = (1 << 0);
        public final static int RiBen       = (1 << 1);
        public final static int QiTaWaiXiao = (1 << 2);
    }

    public static void main(String[] args) {
        wl("1<<0 = " + (1 << 0));
        wl("1<<1 = " + (1 << 1));
        wl("1<<2 = " + (1 << 2));
        wl("1<<3 = " + (1 << 3));
        wl("1<<4 = " + (1 << 4));
        wl("1<<5 = " + (1 << 5));
        wl("1<<6 = " + (1 << 6));
        wl("1<<7 = " + (1 << 7));
        wl("1<<8 = " + (1 << 8));
        wl("1<<9 = " + (1 << 9));
        wl("1<<10 = " + (1 << 10));
        wl("1<<11 = " + (1 << 11));
        wl("1<<12 = " + (1 << 12));
        wl("1<<13 = " + (1 << 13));
        wl("1<<14 = " + (1 << 14));
        wl("1<<15 = " + (1 << 15));
        wl("1<<16 = " + (1 << 16));
        wl("1<<17 = " + (1 << 17));
        wl("1<<18 = " + (1 << 18));
        wl("1<<19 = " + (1 << 19));
        wl("1<<20 = " + (1 << 20));
        wl("1<<21 = " + (1 << 21));
        wl("1<<22 = " + (1 << 22));
        wl("1<<23 = " + (1 << 23));
        wl("1<<24 = " + (1 << 24));
        wl("1<<25 = " + (1 << 25));
        wl("1<<26 = " + (1 << 26));
        wl("1<<27 = " + (1 << 27));
        wl("1<<28 = " + (1 << 28));
        wl("1<<29 = " + (1 << 29));
        wl("1<<30 = " + (1 << 30));
        wl("1<<31 = " + (1 << 31));
        wl("1<<32 = " + (1 << 32));
    }

    private static void wl(String msg) {
        System.out.println(msg);
    }
}

执行结果:

//一般等于无状态,不选,为:0
1<<0 = 1
1<<1 = 2
1<<2 = 4
1<<3 = 8
1<<4 = 16
1<<5 = 32
1<<6 = 64
1<<7 = 128
1<<8 = 256
1<<9 = 512
1<<10 = 1024
1<<11 = 2048
1<<12 = 4096
1<<13 = 8192
1<<14 = 16384
1<<15 = 32768
1<<16 = 65536
1<<17 = 131072
1<<18 = 262144
1<<19 = 524288
1<<20 = 1048576
1<<21 = 2097152
1<<22 = 4194304
1<<23 = 8388608
1<<24 = 16777216
1<<25 = 33554432
1<<26 = 67108864
1<<27 = 134217728
1<<28 = 268435456
1<<29 = 536870912
1<<30 = 1073741824
1<<31 = -2147483648
1<<32 = 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值