java 转义字符"\u0010" "\010" "\2"等
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。