Поскольку я проходил через исходный код ConcurrentHashMap, я столкнулся с таким большим количеством бит-операторов сдвига. Некоторые применяются для создания констант, а некоторые - для переменных.Использование оператора бит-сдвига сдвига в 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 может быть объявлена непосредственно то, что использование с помощью оператора побитового сдвига.
Я думаю, что разработчикам было легче определять эти значения, думая в двоичном, а не в десятичном формате. Бинарным представлением '1 << 30' является' 10000000000000000000000000000000000', что в некотором смысле выглядит «более простым», чем десятичным «1073741824'. – Mena