aix 'ответ правильный, но позвольте мне добавить небольшое объяснение:
Важно понять типы различных сущностей выражения ry-'0'
, чтобы понять его. Что ж, возможно, даже до этого нам нужно понять, что мы смотрим на вычитание , то есть на выражение или вид x минус y , где x ry
и y is '0'
ry
- это int
, 0
- это char
. В Java возможно приведение вверх char
к int
. Чтобы арифметическое выражение типа x - y работало, x и y должны быть одного типа. В вашем случае у вас есть
ry - '0'
то есть int - char
, что касается типов. Таким образом, ваша виртуальная машина Java автоматически преобразует тип char в int, что приводит к тому, что оба аргумента минуса совпадают по типу. Это также причина того, что возвращаемое значение имеет тип int
. Вы можете проверить это, изменив объявление rz с int rz
на char rz
: компиляция будет жаловаться, что вы пытаетесь присвоить int
(результат вычитания) переменной char
(rz ) без явного приведения.