Vous avez assigné un caractère littéral, qui est délimité par des guillemets simples, par exemple 'a'
(à la différence d'une chaîne littérale, qui est délimitée par des guillemets doubles, par ex. "a"
) à un int
variable. Java effectue un élargissement automatique à partir de la variable non signée de 16 bits. char
au format 32 bits signé int
.
Toutefois, lorsqu'un caractère littéral est une barre oblique inversée suivie de 1 à 3 chiffres, il s'agit d'un caractère de type octal ( base/radix 8) représentation du personnage. Ainsi :
-
\15
= 1×8 + 5 = 13 (un retour chariot ; identique à '\r'
)
-
\25
= 2×8 + 5 = 21 (un NAK char - negative acknowledgement)
-
\100
= 1×64 + 0×8 + 0 = 64 (le symbole @ ; identique à '@'
)
Pour plus d'informations sur les littéraux de caractères et les séquences d'échappement, voir les sections JLS :
En citant le BNF à partir 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