> -- Peter Almazov писал(а):
> Было бы интересно узнать версии и параметры окружения.
Не зависит.
> -- Peter Almazov писал(а):
> Если разберетесь в причинах, отпишитесь - интересно (сам я с ней не работаю
Ну, тут на самом деле всё очень просто. Integer, это вам не int, это вполне себе класс.
В яве == для ссылочных типов (ака классов) всегда сравнивает ссылки, а не содержимое классов.
## Код:
```
Integer a = 420;
```

Тут происходит автобоксинг. Грубо говоря вызывается конструктор класса Integer с аргументом 420.
## Код:
```
a<=b;
```

Тут произойдет автоанбоксинг. Т.е. из 'a' и 'b' (Integer) вытащат содержащееся там число (int) и сравнят.

Итак, a==b сравнит ссылки, a<=b сравнит содержимое.

Замечу, что Integer нифига не обычный класс, ибо вообще говоря, перегружать операторы в яве нельзя.

Однако остается непонятным почему при a=42 мы имеем таки true. Всё также просто -- по всей видимости объекты для всех чисел что влезают в один байт (-128 ... 127) уже созданы. Соответственно когда мы пишем Integer a = 42, ничего создаваться не будет, 'a' будет просто указывать на уже готовый объектик. Также как и Integer b = 42. Объект один и тот же, поэтому (a==b) == true.