思路:使用二進(jìn)制的與運(yùn)算(&
),即可實(shí)現(xiàn)一個(gè)變量保存多個(gè)值烟具。
假設(shè)有以下使用場景:
請選擇你愿意去生活的城市:北京梢什、上海、杭州朝聋、鄭州绳矩。
可多選,要求使用一個(gè)int
變量保存用戶的選擇玖翅。
以下為代碼實(shí)現(xiàn):
- 先定義
4
個(gè)int
變量翼馆,為別表示北京、上海金度、杭州应媚、鄭州
。代碼如下:
int 北京 = 2 << 0; // 2 二進(jìn)制:10
int 上海 = 2 << 1; // 4 二進(jìn)制:100
int 杭州 = 2 << 2; // 8 二進(jìn)制:1000
int 鄭州 = 2 << 3; // 16 二進(jìn)制:10000
- 將用戶選擇的城市對應(yīng)的變量值相加猜极,即可得到用戶的選擇結(jié)果中姜。比如用戶選擇了
北京、杭州跟伏、鄭州
丢胚。則用戶的選擇結(jié)果可表示為:
int result = 北京 + 杭州 + 鄭州; // 2 + 8 + 16 = 26 二進(jìn)制:11010
- 要判斷用戶的選擇結(jié)果中是否包含指定城市,只需要使用選擇結(jié)果和該城市作與運(yùn)算即可受扳。如果選擇結(jié)果中包含該城市携龟,則與運(yùn)算后的結(jié)果就是該城市對應(yīng)的變量值。比如判斷用戶的選擇結(jié)果中是否包含北京勘高,代碼實(shí)現(xiàn)如下:
int city = result & 北京; // 11010 & 10 = 10
boolean contains = (city == 北京); // true