Как и другие математические операторы, такие как +
, оператор ==
выполняет двоичное числовое продвижение для своих операндов.
Когда оператор применяет двоичное числовоеПовышение до пары операндов, каждый из которых должен обозначать значение, которое может быть преобразовано в числовой тип, применяются следующие правила в следующем порядке:
Если какой-либо операнд имеетссылочный тип, он подвергается преобразованию без распаковки (§5.1.8).
Расширяющее примитивное преобразование (§5.1.2) применяется для преобразования одного или обоих операндов ...
Компилятор сначала распаковывает Integer
в int
, затем расширяет int
до double
.Он выполнит оба, если сначала произойдет распаковка.
Java выполнит оба преобразования неявно для многих операторов:
Двоичное числовое продвижение выполняется для операндов некоторых операторов:
Мультипликативные операторы *
, /
и %
(§15.17)
Операторы сложения и вычитания для числовых типов +
и -
(§15.18.2)
Операторы числового сравнения <
, <=
, >
и >=
(§15.20.1)
Операторы числового равенства ==
и !=
(§15.21.1)
Целочисленные побитовые операторы &
, ^
и |
(§15.22.1)
В некоторых случаях условный оператор ? :
(§15.25)