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 int
variable. Java realiza una conversión de ampliación automática de 16 bits sin firmar char
a 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