java轉義字符
\xxx 八進制轉義符
\uxxxx 十六進制轉義符
像"\010","\u0010"這種字符串,不要以為它們長度大於1,其實它們僅占一個字節,也就是由 '\010'和'\u0010'組成的單字節字符串,那么這兩個字符究竟代表什么呢?它們是否是一樣的?其實它們都是不可見字符,分別表示退格和數據鏈路轉義(參考ASCII表),使用Arrays.toString(s.getBytes())可以打印一個字符串的字節數組,也就是其ASCII的十進制值,使用如下代碼對轉義字符的進行測試:
System.out.println(Arrays.toString("0010".getBytes())); //[48,48,49,48] System.out.println(Arrays.toString("\u0010".getBytes())); //[16] '\u0000'~'\uFFFF' //System.out.println(Arrays.toString("\u010".getBytes())); //編譯不通過,提示非法的Unicode轉義 System.out.println(Arrays.toString("\010".getBytes())); //[8] 范圍’\000′~’\377′ System.out.println(Arrays.toString("\10".getBytes())); //[8] 長度可為1~3位 System.out.println("\u0002".equals("\2")); //true System.out.println(Integer.valueOf('\u0002')); //2 (ASCII值) System.out.println("\101"); //A System.out.println('\101'); //A System.out.println("\u0041"); //A System.out.println("abcd\b\b"); //ab (\b表示退格)
可以看到, '\u0010' 對應的十進制ASCII值為16,'\010'對應的十進制ASCII值為8,事實上十六進制的10就是16,八進制的10就是8。
