Хорошо, прежде всего, фиксируя формат кода:
char char1;
char1 = 'a';
System.out.println(char1); // print 1
System.out.println(char1 + 1); // print 2
char1 += 1;
System.out.println(char1); // print 3
, который дает выход:
a
98
b
Теперь, давайте посмотрите на каждый вызов println() в deta il:
1: Это просто берет дескриптор символа с именем char1 и печатает его. Ему была назначена буква a (обратите внимание на одинарные кавычки вокруг a в задании, указывающие символ). Неудивительно, что это печатает символ a.
2: Для этой линии вы выполняете целочисленное добавление. A char in java имеет знак unicode. Значение unicode для буквы a сопоставляется с номером 97. (Обратите внимание, что это также соответствует значению ASCII для a). При выполнении арифметических операций в Java между несогласованными типами значение меньшего/менее точного значения типа будет «обновлено» до более крупного типа (это очень неточно указано). Из-за этого символ «обновляется» до int до того, как выполняется добавление, и результатом также является int. Имея это в виду, неудивительно, что 97 из +1 приводит к печати 98.
3: В этом случае мы снова печатаем значение символа, поэтому печатается символ. На этот раз 98, которые мы увидели сгенерированными ранее, неявно лидируют назад в символ. Опять же, неудивительно, что следующее наибольшее числовое отображение из a равно b, поэтому мы видим, что b напечатан.
Это даже не действительная Java. -1 – Doorknob
Как только код будет правильно отформатирован (скомпилирован), он отлично работает для меня .. – MadProgrammer
Это была опечатка, это правильно в моем коде. –