2013-12-08 95 views
0

我在Java語言規範中閱讀了以下短語。關於Java語言規範的澄清

It is a compile-time error for the character following the SingleCharacter or EscapeSequence to be other than a '.

我無法理解什麼是上面一行的意思。有人可以用例子來解釋它嗎?

+0

http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.4-300 – Kapep

回答

4

這裏說的基本上是:每個字符都會產生一個編譯時間錯誤,它不同於',它出現在「字符」本身之後。其中「字符」是字符形式的內容(如:a0, \u0093)或轉義序列(如:\\,\b,\n)。

所以,這將是錯誤的:

  • 'aa',因爲第二a不是一個單引號(')。
  • '\\a',因爲第二個字符(a)不是單引號。
  • 'a,因爲「內容」後面的字符不是引號(但可能是換行符或空格)。

旁註:這也不行:char c = '\u0027';。因爲這是單引號的代碼點,所以它被翻譯成:char c = ''';

+0

迄今爲止的最佳解釋。 – Ashish

3

我想這是關於字符文字。另一種說法是:字符文字必須用撇號括起來,如果你忘記第二個撇號,這是一個錯誤。

因此:

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

'''''也是錯誤的(_「SingleCharacter 「_部分)。 –

+0

其實''ab''也是錯的 –

+0

''\''也是錯的。他從來沒有說過這是一個完整的列表。 – Kapep

0

在Java中,可以定義字符變量爲轉義序列或單個字符。那些應該被單引號包圍。

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

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