public class Wrap
{
public static void main(String args[])
{
Integer a =1000;
Integer b =1000;
System.out.println(a == b); //line 7
Integer c = 10;
Integer d = 10;
System.out.println(c == d); // line 10
}
}
Понимаемая часть: В строке 7 он сравнивает ли со ссылкой ссылкой на переменную же объекта или нет. И в строке 10 сравниваются фактические примитивные данные, которые хранится в объекте-оболочке.Упаковочный Autoboxing
То, что я нашел: Если значение находится в пределах от -128 до 127 будет сравнивать элементарное значение, либо проверить, является ли переменная ссылочного типа имеет в виду тот же объект
Мой вопрос: Почему это так? Есть ли какая-то логика? Это логика любого использования? Или это просто способ оракула, чтобы сказать, как java отличается от других языков.
1000 may of не может этого сделать. Попробуйте '-XX: + AggressiveOpts' –
Существует некоторое кэширование, по какой-то нечетной причине, поэтому сравнение работает для этого диапазона. – arynaq