2013-02-19 27 views
16

我已經看到了這個char定義爲 在char ch = '\117'爲什麼' 117'在Java中是有效的字符文字?

什麼樣的表現的是'\117'

我知道escaped-sequence'\n',例如,或unicode`\udddd',其中d是一個十六進制數字,但我從來沒有在我的整個生活中看到這樣的東西作爲'\117'!令人驚訝的是,它編譯! (輸出是O

+11

請參見[字符和字符串文字的轉義序列](http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html #JLS-3.10.6)。 – EJP 2013-02-19 05:42:10

+1

這是八進制表示法。請參閱[爲什麼Java八進制轉義只能達到255?](http://stackoverflow.com/q/9543026/111424),尤其是[rob mayoff的答案](http://stackoverflow.com/a/9543611/111424 )。這可能是爲了與舊的語言和程序員兼容。 – 2013-02-19 12:00:32

回答

8

它是在八進制,從C/C++保留。

3

這是因爲它的八進制表示的資本O字符。

如果您嘗試打印您的char ch='\117';,您會看到它打印O

2

它是字符 「O」 一個八進制值,當我的System.out.println(..)我得到這樣的輸出:

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

輸出:

Char is : O 
+1

不止於此,它是八進制的ASCII值。 – EJP 2013-02-19 05:44:10

+0

對不起,更新相同:) @EJP – 2013-02-19 05:44:54

相關問題