static final int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}
a|=b的意思就是把a和b按位或然后赋值给a 按位或的意思就是先把a和b都换成2进制,然后用或操作,相当于a=a|b a!=b的意思a不等于b
int features = 0;
features |= Feature.AutoCloseSource.getMask();
结果发现与常用的 += 之类是一样的。
boolean mark = Boolean.FALSE;
mark |= true; // mark = mark || true
同时,还有几个平时用的比较少的: &=、^=
mark &= true; // mark = mark && true
//^=(异或):相同为假,不同为真。
mark ^= true; // mark = mark ^= true
加一个百度到的详细说明的链接:http://blog.csdn.net/ziwen00