该用户从未签到
|
直接给例子吧!例子中将讲解 1.权限表示 2.权限判断 3.添加权限 4.取消权限' L0 i" {- R( W: [
- public class Test {0 w( x7 T' q5 U; a h& I+ b$ l
- : E. e9 U$ u( m4 D* p) ], {$ b
- /**
. T8 E, |, z0 x( E* \: V7 t - * @param args
( _5 B4 X5 G* G Z- y& b5 I - */
) J! C4 H; T+ s* Y( ]0 p2 P: E - public static void main(String[] args) {
: Y. }2 t9 s, E. C8 f
" [" Z5 ~6 t( c N4 ~4 f" g& a2 q! l- /**
1 ?8 b/ a+ t$ S0 f0 e4 y - * 四种权限 ,当前定义为int,以下二进制表示只取后四位作说明
5 S1 F; M }8 k5 U4 l( k - */( U3 l: q+ E# w4 q8 _
! k' V* I4 u0 B' a( D- // 添加
( f, P+ ^. O# x+ s% o: j - int c = 1;// ...0001& f' `/ Q- {! H( w( \
- // 查询
; T! [. \: x% D* z - int r = 2;// ...0010" f8 f# r) J1 F- f% f2 ^7 T
- // 修改
/ Q. L/ b2 O. _3 o! Q- @ u - int u = 4;// ...0100# w) }7 [) D( {, s/ {8 d% ^! ^
- // 删除
" L( A" [4 t& N5 V9 n - int d = 8;// ...10009 e. E& Z% V" N
/ \" ~& z7 j% q$ G' d/ Q- /**
* {5 Z' H$ L3 Z# O5 I - *
9 V: @# {9 k) z: ?/ Y - * 大家可以观察四种权限的二进制表示的规律 ,都是2的N次方,
2 @4 A2 _) s3 { - * 就表示本身,添加权限有最后一位为其它为0,查询倒数第二位为1其它都为0,修改倒数第三个为1其它都为0,删除倒数第四个为1其它都为0. K1 u$ }4 N6 t5 U) M6 y4 Q; b- ~
- * " J) Z" X) x. z0 [ a# Y6 l0 U
- */
, j. N' o" r5 f6 \7 ~7 b$ b: u/ h. ?) _ - . W% W8 T y# g' v4 |& ]
- /**7 @2 n( I3 o+ b
- *1111---- 这样表示有哪种权限时可以用 |(按位或) 操作" E7 l% ]% B) q& A, w% j* D' `
- * 1 c4 c5 l S% J; g
- */
, [+ Z5 ^* s+ L8 Q2 o7 W1 s! r
y- z! t6 f$ ?0 h- // 用户A有添加和修改权限' t6 l; H o3 J5 v; ?! e3 }3 x L
- int usera = c | r | u;
8 `! V3 l# \4 J5 w7 M - " k2 C4 m1 \ F2 y& f7 H3 Q/ T4 F
- // 用户B有添加和删除权限
R1 U0 c4 A8 f- F) K" l5 C - int userb = c | d;
( B% {) }* M1 r5 J
: E( K/ L2 u; C$ d2 U, R% Q- /**
1 t) d. D- a4 y; k - * 2222---- 判断用户是否有某种权限用用户权限和要判断的权限进行 &(按位与) 操作,结果为要判断的权限值时表示用户有此权限,否则没有此权限* u/ ^$ B) e' A$ z. l' E
- */
4 D* ?5 S) L& o - ) H1 c% ^: C1 o8 _% Y$ P& w6 f- b7 K
- if ((usera & u) == u) {4 \! c0 g% v* T7 u0 f" Z9 v7 d) K
- System.out.println("用户a有更新权限");
3 ?% x0 Y2 u3 I) s- U - } else {
1 w% u8 `1 T) ^* _3 ?; M - System.out.println("用户a没有有更新权限");0 \. k) Y6 T- j+ {7 h1 v( N
- }
" p D, l% B) r
- ~' ~) j' S/ V9 V0 Y" P3 {- /**
! p0 n7 Z* n0 `: x. d5 E1 h# z2 Z - * 3333---- 给用户添加权限用用户权限和要添加的权限|(按位或) 操作再覆盖之前权限值; @3 d7 x, Q4 A8 k
- */ U7 R, a, F- o G) p
( W" I' W1 q, f# f' r, h& }- if ((userb & u) == u) {. x n, }: u3 W: {/ C; q, W4 O
- System.out.println("用户b有更新权限");
) Q7 T* u8 S7 M) q; E$ u: J: j) D - } else {
) Y, q4 N# V+ |+ t, c% z$ ]0 V - System.out.println("用户b没有更新权限");8 A1 Z8 K# Z; W- M
- }8 P, t) u6 p/ ?5 c- t2 B
5 |6 N; ?. A7 c0 \& P- // 给用户b添加更新权限) H x" {8 d: ~- P) e+ y1 \
- userb = userb | u;
: ~ q: J1 b6 O0 s! X" o6 g; u
! e) z1 o3 |$ g8 k% p+ D* i( `- if ((userb & u) == u) {' a8 Q1 E+ q/ D3 n& Z1 z* o' l
- System.out.println("用户b有更新权限");
; W/ O( V' p3 A) E1 T - } else {8 j5 k3 u% v1 h7 X' h4 ~
- System.out.println("用户b没有更新权限");
" A' T! @7 ]# [* ?7 a1 f - }4 G5 f* K! [' { g
- t# z( P0 m* K [8 C- /**. W* P3 n+ Z" ^% R# \7 d6 F/ Y* P
- * 4444---- 取消用户某种权限,用用户权限和要取消的权限按位取反后进行按位 操作,再覆盖之前权限值
M V p% T. K( h% N - */; {6 R* X7 S, a0 e7 B
-
0 A* z" A3 Z- z- _: i1 u - if ((usera & r) == r) {& l7 w" y) T d |3 E2 D
- System.out.println("用户a有查询权限");2 O U, m* Q! d% W! _' y, X1 O
- } else {
9 s9 N: y# e: q% t" b- l - System.out.println("用户a没有查询权限");
# B6 l% U1 y% B6 U9 M - }
. Y: w# G7 m; P, d6 R- ?$ _" L - 1 |" f5 h2 |/ E7 z7 d9 S# ^. Y
- //取消用户a的查询权限1 [- ?- U+ N0 R/ D: ~; K. [
- usera = usera & (~r);6 F; O: n C( W2 e- i A Z1 L
- & T! H5 m( V5 l3 W
- if ((usera & r) == r) {+ C+ M: a! z# M' g8 S/ z [
- System.out.println("用户a有查询权限");2 U/ R$ D/ ]6 F
- } else {3 S0 A: p" F8 m$ d/ }& k
- System.out.println("用户a没有查询权限");' K$ k2 A: J3 j
- }
+ i8 g- `- ^! Y5 ?9 W - }( v- H1 J) v1 v! [) y6 ~
$ r5 z* p8 z( N1 E! x; W- }
& J7 f, g5 J/ v7 u
复制代码
, e, K8 | A A
$ [) v2 A* K6 H" \2 S. N; W
' c( M* ]1 P) o |
|