Java 中的转义是由反斜杠 \ 开始的,以反斜杠开始的一串字符,称之为转义序列(escape sequence)。比如我们常见的 \n 换行。
这些转义序列对编译器有特殊的意义,下表列出 Java 的转义序列。
| 转义序列 | 描述 |
|---|---|
\t |
插入一个 tab 符号。 |
\b |
插入一个退格符。 |
\n |
插入一个新行。 |
\r |
插入一个回车符。 |
\f |
插入一个换页符 |
\' |
插入一个单引号。 |
\" |
插入一个双引号。 |
\\ |
插入一个反斜杠。 |
除了这些特定的表示之外,Java 也可以通过转义字符+八进制和十六进制数字来表示特定字符。
表示八进制
我们可以用反斜杠加八进制来表示 \[0-377] 一个 ascii 字符,这个范围是一字节(八进制的377=八位二进制的范围)。
如下例子:
\ 八进制数
Examples:
\0, \1, \2, \3, \4, \5, \6, \7
\ 八进制数 八进制数
Examples:
\00, \07, \17, \27, \37, \47, \57, \67, \77
\ 0-3 八进制数 八进制数
Examples:
\000, \177, \277, \367,\377
表示 Unicode 字符
Java 也支持 Unicode 的转义字符。Unicode 转义由 \u 开始加上四位十六进制字符。指的注意的是,Java 的 Unicode 转义是这编译期间就执行了(词法分析阶段),这里给出一个例子:
public static void main(String[] args) {
System.out.println("\u000A");
}
// java: unclosed string literal
运行上面的代码会抛出异常,在编译时 \u000A 会替换成换行符,因此代码会变成如下这样:
System.out.println("
");
甚至在注释中也会被替换。
public static void main(String[] args) {
// \u000A111
}
// error -> java: not a statement
转义特殊的字符
转义字符
正则表达式中的转义
正则表达式存在元字符,当我们想匹配元字符本身时,也需要用到转义,这里列出几个:
| 表达式 | 可匹配 |
|---|---|
| ^ | 匹配 ^ 符号本身 |
| $ | 匹配 $ 符号本身 |
| . | 匹配小数点(.)本身 |
| 同时以代码举例: |
public static void main(String[] args) {
String s = "1.3";
System.out.println("替换前 = " + s);
System.out.println("替换后 = " + s.replaceAll("\\.", ""));
}