2013-02-19 19 views
16

私は、これはcharchar ch = '\117'Javaで ' 117'が有効な文字リテラルであるのはなぜですか?

表現はどのような'\117'ある として定義見てきましたか?

私はescaped-sequenceは、例えば、'\n'知っている、またはunicodedは、単一の16進数で`\udddd'、ですが、私は私の全体の生活の中で'\117'のようなものを見たことがありません! 驚いたことに、それはコンパイルします!それは、8進数でC/C++からホールドオーバだ

+11

[文字と文字列リテラルのエスケープシーケンス](http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html)を参照してください。 #jls-3.10.6)。 – EJP

+1

これは8進表記です。 [なぜJava 8進エスケープだけが255になるのですか?](http://stackoverflow.com/q/9543026/111424)、特に[rob mayoffの答え](http://stackoverflow.com/a/9543611/111424)を参照してください。 )。これはおそらく古い言語やプログラマーとの互換性のためです。 –

答えて

8

(そして出力はOです)。

3

これは、そのキャプチャルの8進表現O文字です。

char ch='\117';を印刷すると、Oが印刷されます。

2

それは私がするSystem.out.println(..)をやったときに私はこの出力を得た、文字 "O" の8進数値です:

char ch = '\117'; 
System.out.println("Char is: " + ch); 

出力:

Char is : O 
+1

これ以上です.8進数のASCII値です。 – EJP

+0

申し訳ありません、更新された同じ:) @EJP –

関連する問題