int asciiValueFirst = (int)first;
int asciiValueSecond = (int)second;
if (asciiValueFirst == asciiValueSecond) {
System.out.println("равны");
} else if (first > second) {
System.out.println("больше");
} else if (first < second) {
System.out.println("меньше");Александр
18 уровень
Не понял почему после первого приведения типов дальше приводить не понадобилось?
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #3519817Работает в Банк
4 ноября 2025, 01:58
Операторы больше/меньше автоматически преобразовывает переменную Character к коду символа.
А оператор == сравнивает два объекта без преобразования. Поэтому необходимо принудительное преобразование в число, то есть в код.
+1
Денис Enterprise Java Developer
4 ноября 2025, 08:38
Операторы сравнения ничего и ни к чему не преобразовывают, они просто выполняют свою работу. Однако, в ряде случаев компилятор сам решает что нужно провести автораспаковку объекта-обёртки до соответствующего примитивного типа. Делается это для совместимости этих самых обёрток и примитивов. Очевидно что таких специфических классов не дофига, ровно по количеству самих примитивов.
Двойное равно сравнивает значение для примитивов и ссылку для объектов. Если сравнение смешанное, примитив и обёртка, то произойдёт автораспаковка, точно так же как и с операторами больше меньше.
+3
wersiv
3 ноября 2025, 04:21
Главное что работает
-2
Денис Enterprise Java Developer
27 октября 2025, 13:55
Ну тут скорее есть смысл задаться вопросом, а нужно ли было привидение вообще? Какого типа у тебя first и second? Что именно этот тип данных собой представляет? Какие именно значения там лежат? Как с ними предполагается работать? Думаю что ответив на эти вопросы всё станет более менее ясно.
+2