特殊轉義序列(Special escape sequences)
Error:(13, 0) ajc: Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
轉義序列例如(\b, \t, \n, \f, \r, \”, \’ and \).對Java而言一共只有7個
其中"'"
雙引號對其中的單引號也有轉義作用。
由於歷史原因(祖師爺C的影響),大多數編程語言,都兼容這幾種轉義字符
需要注意的是轉義字符是字符而不是字符串
Unicode轉義字符
例如(e.g. \u000a)
需要注意Unicode轉義字符u0022
對應的字符爲"
而不是\"
理解這個謎題的關鍵是要知道:Java對在字符串字面常量中的Unicode轉義字符沒有提供任何特殊處理。編譯器在將程序解析成各種符號之前,先將Unicode轉義字符轉換成爲它們所表示的字符[JLS 3.2]
八進制轉義字符
3位長度
例如(e.g.\012)
Java中使用正則表達式中的轉義字符
需要使用\\
表示正則中的轉義字符\
需要使用\\\\
表示正則中的普通字符(raw character )或稱爲字面值(String iterals)\\
其他編程語言如Python中支持稱爲(字面值)的語法(e.g. r"\n"
中的\n
表示的是字符\
以及字符n
而不是轉義字符\n
)
爲什麼需要轉義字符
這裏的轉義是以字面義
爲參考的。所以轉義字符實際意義與字面義
不符。(啥叫字面義
? \u00ff 的字面義爲字符\
,u
,0
,0
,f
,f
)。