Я использую Java ArrayList.Почему одинаковые значения, полученные от ArrayList, меняются на разные?
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(-129);
list.add(-129);
return (list.get(0) == list.get(1));
Возвращаемое значение ложно. Я знаю, что это должна быть проблема диапазона, поскольку, когда я использую -128, он возвращает true. Но может ли кто-нибудь сказать мне причину этого?
Вы проверяете ссылочное равенство. Вместо этого используйте '.equals()'. -128 работает, потому что он находится в диапазоне кешированных значений. – shmosel
Если да, то почему -128 верно? –
Целочисленное кэширование - посмотрите на мой ответ. –