Символы представляют из себя какое-то значение в кодировке. Получая код символа в инт мы можем проводить операции сдвига, потом переводим обратно в тип char, понятный для пользователя. Как-то так...
каждый символ имеет свой код а - это 96, вроде б - 97 когда ты чар приводишь к инту, то а превращается в 96, прибавляя к инту 1, получаем 97, после конвертим в чар и получаем б