这个 Java 字符串中的“\1”代表啥?
Posted
技术标签:
【中文标题】这个 Java 字符串中的“\\1”代表啥?【英文标题】:What does "\1" represent in this Java string?这个 Java 字符串中的“\1”代表什么? 【发布时间】:2013-07-11 01:51:06 【问题描述】:System.out.println("\1");
我认为它没有编译是因为无法识别的转义序列。
"\1"
究竟代表什么?
【问题讨论】:
【参考方案1】:这是一个八进制转义序列,在 JLS 的 section 3.10.6 中列出。比如:
String x = "\16";
相当于:
String x = "\u000E";
(作为八进制 16 = 十六进制 E。)
所以\1
us U+0001,“标题开始”字符。
根据我的经验,八进制转义序列在 Java 中很少使用,我个人会尽可能避免使用它们。当我想使用数字转义序列指定一个字符时,我总是使用\uxxxx
。
【讨论】:
Java 是其中一种语言,当您遇到它所具有的“偶然”错误时,您会大发雷霆。您是否知道 Java 将字符转义解释为源代码中的 literal 字符?好吧,除非您尝试转义回车符,否则这不是问题……然后 Java 认为您在源代码中添加了换行符,而您确实不想要换行符。 @PP.:这取决于您的意思是哪个字符转义。例如,// This \n is okay
的注释可以,但 // This \u000a is not
不会编译。
你的第二个代码行没有编译(至少在我的机器上):"string literal is not proper closed by a double-quote".
另外,由于 Java 没有原始字符串,因此使用带有反向引用的正则表达式需要使用 \\1
,这可能会很烦人。
@Kevin:是的,但我不使用非 ASCII 标识符,在评论中我会使用 U+000D 或类似的东西。这两种情况都不是“我想使用数字转义序列指定一个字符”。【参考方案2】:
在java中是下面的值
\u0001
【讨论】:
以上是关于这个 Java 字符串中的“\1”代表啥?的主要内容,如果未能解决你的问题,请参考以下文章