我有以下代码:
char c = '\249';
IDEA在'\ 249'下加上“字符文字中的字符过多” 消息。 当我尝试运行代码时,出现“不是语句” 和“未封闭字符文字” 错误。
为什么会这样?
同时'\ 250'文字可以正常工作。
据我了解,我们可以使用'\'构造通过ASCII码设置char,对吧?
我还比较了以下内容的输出:
c1 = '\63'; //3
c2 = 63; // ?
它们是不同的?是正确的。那么'\'构造是做什么用的?
答案 0 :(得分:4)
'
用于引用char
值。
使用字符文字中的\
来定义OctalEscape
,并且必须在其后跟随1-3个八进制数字(0-7)。
因此,对于'\249'
,9
不是八进制数字,这意味着\24
是一个(转义的)字符,而9
是另一个字符和一个字符文字不能包含2个字符,因此无效。
'\250'
是字符250(八进制)/ 168(十进制)/ A8(十六进制)的有效八进制转义,这是Unicode字符'DIAERESIS' (U+00A8),又名¨
答案 1 :(得分:3)
在Java中,您可以使用字符串文字或字符文字来指定具有八进制转义符的字符,该字符受JLS, Section 3.10.6约束。
OctalEscape:
\ OctalDigit
\ OctalDigit OctalDigit
\ ZeroToThree OctalDigit OctalDigit
八进制数字是数字0到7。逸出序列\249
是非法的,因为9
不是八进制数字,但是逸出序列\250
是合法的,因为它适合第3位以上的产品。
当您将char
设置为\63
的Unicode字符号51为'3'
时。将char
设置为63
时,即Unicode字符63,即'?'
。