2011-07-25 7 views

答えて

8

Java言語仕様がこのhereを説明+ "\ 40" として

を "0" にそれを解釈しています。

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 
+3

は、私はそれが失敗した場合、それが良いだろうと思います。それはひどく秘密の区別です。 – Jay

5

それは '0' に続く

\ OctalDigit OctalDigit 

の建設...に該当します。それ

\ ZeroToThree OctalDigit OctalDigit 

落ちない...ので、それが曖昧か、範囲外ではありません。詳細は、Java言語仕様のsection 3.10.6を参照してください。あなたは、まさにこの理由のため文字リテラルとして使用することはできません

注:個人的に

char x = '\377'; // Fine 
char y = '\400'; // Error: unclosed character literal 
+0

"unclosed character literal"エラーメッセージが公式javacからのものである場合、それは奇妙なエラーメッセージのリストにうまく収まります。 –

+0

@Thorbjørn:私はそれが奇妙だとは思わない。このような状況に限定されるものではありません。「abc」もそれを行います。 –

関連する問題