澄清Java语言规范

时间:2013-12-08 21:27:11

标签: java compile-time jls

我在Java语言规范中阅读了以下短语。

  

单个字符后面的字符是编译时错误   EscapeSequence不是'。'

我无法理解上述行的含义。有人可以用例子解释一下。

3 个答案:

答案 0 :(得分:4)

基本上说的是:将为“'之后的每个字符生成编译时错误,该字符位于”字符“本身之后。其中“字符”是字符形式的内容(例如:a0\u0093)或转义序列(如:\\,{{ 1}},\b)。

所以,这是错误的:

  • \n,因为第二个'aa'不是单引号(a)。
  • ',因为第二个字符('\\a')不是单引号。
  • a,因为“内容”之后的字符不是引号(但可能是换行符或空格)。

旁注:这也不起作用:'a。因为这是单引号的代码点,所以它被翻译成:char c = '\u0027';

答案 1 :(得分:3)

我猜这是关于字符文字的。另一种说法是:字符文字必须用撇号括起来,如果你忘记了第二个撇号,那就错了。

因此:

'a'          // correct
'\007'       // correct
'ab          // wrong

答案 2 :(得分:0)

在Java中,您可以将字符变量定义为转义序列或单个字符。这些应该用单引号括起来。

char ch = 'a'; 
// Unicode for uppercase Greek omega character
char uniChar = '\u039A';

更多信息和示例可以在Characters上的Java教程中找到。