JAVA 中的转义字符

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。

转载自 http://ljhzzyx.blog.163.com/blog/static/38380312200971415534375/

猜你喜欢

转载自m635674608.iteye.com/blog/2323931