【发布时间】:2013-12-08 21:27:10
【问题描述】:
我在 Java 语言规范中阅读了以下短语。
SingleCharacter 或后面的字符是编译时错误 EscapeSequence 不是 '.'
我无法理解上述行的含义。有人可以举个例子来解释一下。
【问题讨论】:
标签: java compile-time jls
我在 Java 语言规范中阅读了以下短语。
SingleCharacter 或后面的字符是编译时错误 EscapeSequence 不是 '.'
我无法理解上述行的含义。有人可以举个例子来解释一下。
【问题讨论】:
标签: java compile-time jls
基本上说的是:每个不同于' 的字符都会生成一个编译时错误,它出现在“字符”本身之后。其中“字符”是字符形式的内容(如:a、0、\u0093)或转义序列(如:\\、\b、\n)。
所以,这将是错误的:
'aa',因为第二个 a 不是单引号 (')。'\\a',因为第二个字符(a)不是单引号。'a,因为“内容”之后的字符不是引号(但可能是换行符或空格)。旁注:这也不起作用:char c = '\u0027';。因为这是单引号的代码点,所以它被翻译成:char c = ''';。
【讨论】:
我想这是关于字符文字的。另一种说法是:字符文字必须用撇号括起来,如果忘记第二个撇号,则会出错。
因此:
'a' // correct
'\007' // correct
'ab // wrong
【讨论】:
'\' 也是错误的。不过,他从未说过这是一份完整的清单。
在 Java 中,您可以将字符变量定义为转义序列或单个字符。这些应该用单引号括起来。
char ch = 'a';
// Unicode for uppercase Greek omega character
char uniChar = '\u039A';
更多信息和示例可以在Characters上的Java教程中找到。
【讨论】: