Вы не понимаете, что означает "тот же объект будет возвращен".
Таким образом, сравнение с ==
фактически сравнивает ячейки памяти и возвращает истину, только когда две переменные содержат один и тот же объект (т.е. хранятся в одной и той же ячейке памяти).
Значения между -От 128 до 127 хранятся в пуле целочисленных констант, что означает, что каждые 10 - это одни и те же 10 (т. Е. Одно и то же место в памяти), каждые 12 - это те же 12 и т. Д. Но это не , так как всеДесятки и двенадцатые - это то, что ваш вопрос непреднамеренно предполагает.
В любом случае, как только вы выходите за пределы этого диапазона, каждый примитив int является новым объектом и присваивается новой ячейке памяти за пределами пула констант. .
Это можно проверить с помощью следующего кода:
public static void main(String[] args) {
Integer a = 1000;
Integer b = 1000;
if(a == b)
System.out.println("same");
else
System.out.println("Not");
}
Это выведет «Not», потому что a
и b
- это два разных объекта, хранящихся в разных местах памяти.
И вот почему вы должны сравнивать вещи с .equals()