Ha asignado un carácter literal, que está delimitado por comillas simples, por ejemplo 'a'(a diferencia de un literal de cadena, que está delimitado por comillas dobles, por ejemplo "a") a una intvariable. Java realiza una conversión de ampliación automática de 16 bits sin firmar chara 32 bits firmados int.
Sin embargo, cuando un carácter literal es una barra invertida seguida de 1 a 3 dígitos, es una representación octal ( base / raíz 8) del carácter. Así:
\15= 1 × 8 + 5 = 13 (un retorno de carro; igual que '\r')
\25 = 2 × 8 + 5 = 21 (un carácter NAK - reconocimiento negativo)
\100= 1 × 64 + 0 × 8 + 0 = 64 (el símbolo @; igual que '@')
Para obtener más información sobre caracteres literales y secuencias de escape, consulte las secciones de JLS:
Citando el BNF de 3.10.6:
OctalEscape:
\ OctalDigit
\ OctalDigit OctalDigit
\ ZeroToThree OctalDigit OctalDigit
OctalDigit: one of
0 1 2 3 4 5 6 7
ZeroToThree: one of
0 1 2 3