这个 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”代表啥?的主要内容,如果未能解决你的问题,请参考以下文章

java中输出函数system.out.println("a="+a);中的+是啥意思!

awk中单独的¥号代表啥?

Linux中echo命令的返回值分别代表啥意思?

Linux中echo命令的返回值分别代表啥意思?

字符常量和字符变量有啥区别?

python中字符串前的'r'代表啥? [复制]