Пару слов о Джаве

У ДиБРа увидел прекрасное. Как вы думаете, что выведет следующий код:

public class Main {
    public static void main(String[] args) {
        Integer a = 10, b = 10; 
        Integer c = 150, d = 150;
        System.out.println(a == b);
        System.out.println(c == d);
    }
}

Как ни странно, но «true» и «false». Насколько я понял по комментариям, это происходит из-за того, в Джаве экземпляры Integer (видимо для скорости) в диапазоне [-128; 127] предопределены. Поэтому объекты «a» и «b» равны (ссылаются на один объект), а «c» и «d» нет. А на равенство значений надо проверять вызовом метода «equals».

19 комментариев

Вот что я люблю¹

Дружба дружбой (34.57КиБ)

Мне кажется это очень плохой слоган, раз он требует пояснения. Мне кажется это очень плохое пояснение, потому что оно ничего не поясняет. «Хочется съесть самому» это и есть «жалко».

3 комментария