当我浏览ConcurrentHashMap源代码时,我遇到了很多位智能移位运算符.一些应用于创建常量,一些用于变量.
static final int MAXIMUM_CAPACITY = 1 << 30;
static final int MAX_SEGMENTS = 1 << 16; // slightly conservative
long u = (((h >>> segmentShift) & segmentMask) << SSHIFT) + SBASE;
我无法理解,如果可以直接声明MAXIMUM_CAPACITY之类的常量,那么使用按位移位运算符有什么用处.
最佳答案