Java中反斜杠需写两个因编译器和JVM双重转义;单个非法,"\"存为一个;正则匹配需"\";仅支持标准ASCII转义序列,Unicode转义uXXXX仅编译期有效。

Java字符串里反斜杠为什么必须写两个
因为Java编译器在解析字符串字面量时,会先处理一次转义,而JVM运行时又按Unicode规则再解释一次。单个 会被当成转义起始符,但后面若没有合法转义字符(如 n、t、"),就会报错 illegal escape character。
所以你想表示一个真实反斜杠(比如Windows路径 C:Users
ame),必须写成 "C:\Users\name"——第一个 转义第二个 ,最终字符串里才存着一个 。
-
"\"→ 字符串内容是单个 -
"\ "→ 字符串内容是+ 制表符(因为\得到,得到制表符) -
正则表达式中更麻烦:匹配一个字面量
,得写"\\ "(编译器吃掉两对,剩下一对给Pattern用)
常见转义序列哪些能直接用,哪些会出问题
Java支持的标准转义序列不多,且全部是ASCII级的。像 u00E9(é)这种Unicode转义是在编译期就解析的,不属于运行时字符串转义;而 A 这种十六进制形式根本不存在,会直接编译失败。
能安全使用的只有:
立即学习“Java免费学习笔记(深入)”;
-
" "(换行)、" "(回车)、" "(制表)、""(退格)、""(换页) -
"""(双引号)、"'"(单引号)、"\"(反斜杠) -
"uXXXX"(Unicode转义,仅限编译期,不能拼接变量)
下面这些写法全是错的:
-
""(垂直制表符:Java不支持,编译报错) -
"