Поскольку x += 3
эквивалентно x = (char)(x+3)
, в то время как x + 3
по умолчанию является операцией int
, присвойте int для char, который должен быть приведен.
Из JLS specification : 15.26.2
,
Составное выражение присваивания в форме E1 op = E2 эквивалентно E1 = (T) ((E1)op (E2)), где T - это тип E1, за исключением того, что E1 оценивается только один раз.Обратите внимание, что подразумеваемое приведение к типу T может быть либо преобразованием идентичности (? .1.1), либо преобразованием сужающего примитива (? .1.3).