Почему восьмеричные экранирования Java достигают 255?
Спецификация языка Java гласит, что экранированные символы внутри строк - это "нормальные" C, такие как\n
а также\t
, но они также указывают восьмеричные побеги от\0
в\377
, В частности, JLS заявляет:
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
это означает что-то вроде\4715
недопустимо, несмотря на то, что оно находится в пределах диапазона символа Java (поскольку символы Java не являются байтами).
Почему у Java есть это произвольное ограничение? Как вы должны указывать восьмеричные коды для символов за пределами 255?