1.八進制轉義序列:\ + 1到3位5數字;範圍'\000'~'\377'
\0:空字符
2.Unicode轉義字符:\u + 四個十六進制數字;0~65535
\u0000:空字符
3.特殊字符:就3個
\":雙引號
\':單引號
\\:反斜線
4.控制字符:5個
\' 單引號字符
\\ 反斜槓字符
\r 回車
\n 換行
\f 走紙換頁
\t 橫向跳格
\b 退格
點的轉義:. ==> u002E
美元符號的轉義:$ ==> u0024
乘方符號的轉義:^ ==> u005E
左大括號的轉義:{ ==> u007B
左方括號的轉義:[ ==> u005B
左圓括號的轉義:( ==> u0028
豎線的轉義:| ==> u007C
右圓括號的轉義:) ==> u0029
星號的轉義:* ==> u002A
加號的轉義:+ ==> u002B
問號的轉義:? ==> u003F
反斜槓的轉義: ==> u005C
換行符在不同的系統下有不同的形式:
\n: Mac os下的文本文件換行符
\r: unix下的文本文件換行符
\r\n: windows下的文本文件換行符
下面的程序使用了兩個Unicode的轉義字符,它們是用其十六進制代碼來表示Unicode字符。那麼,這個程序會打印什麼呢?
Java代碼
public class EscapeRout{
public static void main(String[] args){
// \u0022 是雙引號的Unicode轉義字符
System.out.println("a\u0022.length()
+\u0022b".length());
}
}
public class EscapeRout{
public static void main(String[] args){
// \u0022 是雙引號的Unicode轉義字符
System.out.println("a\u0022.length()
+\u0022b".length());
}
}
對該程序的一般的分析會認爲它應該打印出26,因爲在由兩個雙引號"a\u0022.length()+\u0022b"標識的字符串之間總共有26個字符。
稍微深入一點的分析會認爲該程序應該打印16,因爲兩個Unicode轉義字符每一個在源文件中都需要用6個字符來表示,但是它們只表示字符串中 的一個字符。因此這個字符串應該比它的外表看其來要短10個字符。 如果你運行這個程序,就會發現事情遠不是這麼回事。它打印的既不是26也不是16,而是2。
Java對在字符串字面常量中的Unicode轉義字符沒有提供任何特殊處理。編譯器在將 程序解析成各種符號之前, 先將Unicode轉義字符轉換成爲它們所表示的字符因此,程序中的第一個Unicode轉義字符將作爲一個單字符字符串字面常量("a")的結束引號,而第二個Unicode轉義字符將作爲另一 個單字符字符串字面常量("b")的開始引號。程序打印的是表達式"a".length()+"b".length(),即2。