java char'\ 249'“不是语句”和“未封闭的字符文字”

时间:2019-02-06 21:50:49

标签: java intellij-idea char ascii

我有以下代码:

char c = '\249';

IDEA在'\ 249'下加上“字符文字中的字符过多” 消息。 当我尝试运行代码时,出现“不是语句” “未封闭字符文字” 错误。

为什么会这样?

同时'\ 250'文字可以正常工作。

据我了解,我们可以使用'\'构造通过ASCII码设置char,对吧?

我还比较了以下内容的输出:

c1 = '\63'; //3
c2 = 63; // ?

它们是不同的?是正确的。那么'\'构造是做什么用的?

2 个答案:

答案 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,即'?'