Объект Byte, сравнивающий [дубликат]

45
задан Raedwald 31 May 2015 в 09:14
поделиться

3 ответа

Он определен в JLS # 15.21.1 :

Если операнды оператора равенства имеют числовой тип или один из числового типа (§5.6.2).

И JLS # 5.6.2. :

Когда оператор применяет двоичное числовое продвижение к паре операндов, каждое из которых должно обозначать значение, которое можно конвертировать в числовой тип, применяются следующие правила, чтобы :

  • Если какой-либо операнд имеет ссылочный тип, он подвергается распаковке преобразования [...]

Итак, чтобы ответить на ваши вопрос, Integer распаковывается в int.

44
ответ дан assylias 31 August 2018 в 23:59
поделиться

Объяснение

  1. Когда сравниваются два примитивных значения с использованием == autoboxing оператора operator.
  2. Когда два объекта сравниваются с использованием == operator autoboxing играет роль.
  3. Когда используется смешанная комбинация, которая содержит объект и примитивный тип, и сравнение выполняется с использованием == unboxing оператора, происходит на объекте и преобразуется в примитивный тип.

Пожалуйста, ознакомьтесь с приведенной ниже ссылкой, которая поможет вам разобраться с подробным описанием авто-бокса с подходящим примером.

Refer Link: http://javarevisited.blogspot.in/2012/07/ авто-бокс-и-распаковка-в-Java-be.html

1
ответ дан karan shah 31 August 2018 в 23:59
поделиться

Давайте сделаем несколько примеров:

Случай -1:

       public static void main(String[] args) {
            Integer i1 = 1000;
            int i2 = 1000;
            boolean compared = (i1 == i2);
            System.out.println(compared);
        }

Байт-код:

....
        16: if_icmpne     23 // comparing 2 integers
....

Случай -2:

public static void main(String[] args) {
    Integer i1 = 1000;
    Integer i2 = 1000;
    //int i2 = 1000;
    boolean compared = (i1 == i2);
    System.out.println(compared);
}

Bytecode:

...
     16: if_acmpne     23 // comparing references
....

Итак, в случае сравнения Integer и int с == Integer распаковывается в int, а затем сравнение

В случае сравнения 2 Integers сравниваются ссылки 2 Integers.

34
ответ дан TheLostMind 31 August 2018 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: