2013-02-19 240 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

相关问题