用二進制進行權限管理java
直接給例子吧!例子中將講解 1.權限表示 2.權限判斷 3.添加權限 4.取消權限spa
public class Test { /** * @param args */ public static void main(String[] args) { /** * 四種權限 ,當前定義爲int,如下二進制表示只取後四位做說明 */ // 添加 int c = 1;// ...0001 // 查詢 int r = 2;// ...0010 // 修改 int u = 4;// ...0100 // 刪除 int d = 8;// ...1000 /** * * 你們能夠觀察四種權限的二進制表示的規律 ,都是2的N次方, * 就表示自己,添加權限有最後一位爲其它爲0,查詢倒數第二位爲1其它都爲0,修改倒數第三個爲1其它都爲0,刪除倒數第四個爲1其它都爲0 * */ /** *1111---- 這樣表示有哪一種權限時能夠用 |(按位或) 操做 * */ // 用戶A有添加和修改權限 int usera = c | r | u; // 用戶B有添加和刪除權限 int userb = c | d; /** * 2222---- 判斷用戶是否有某種權限用用戶權限和要判斷的權限進行 &(按位與) 操做,結果爲要判斷的權限值時表示用戶有此權限,不然沒有此權限 */ if ((usera & u) == u) { System.out.println("用戶a有更新權限"); } else { System.out.println("用戶a沒有有更新權限"); } /** * 3333---- 給用戶添加權限用用戶權限和要添加的權限|(按位或) 操做再覆蓋以前權限值 */ if ((userb & u) == u) { System.out.println("用戶b有更新權限"); } else { System.out.println("用戶b沒有更新權限"); } // 給用戶b添加更新權限 userb = userb | u; if ((userb & u) == u) { System.out.println("用戶b有更新權限"); } else { System.out.println("用戶b沒有更新權限"); } /** * 4444---- 取消用戶某種權限,用用戶權限和要取消的權限按位取反後進行按位 操做,再覆蓋以前權限值 */ if ((usera & r) == r) { System.out.println("用戶a有查詢權限"); } else { System.out.println("用戶a沒有查詢權限"); } //取消用戶a的查詢權限 usera = usera & (~r); if ((usera & r) == r) { System.out.println("用戶a有查詢權限"); } else { System.out.println("用戶a沒有查詢權限"); } } }