【问题标题】:What does "\1" represent in this Java string?这个 Java 字符串中的“\1”代表什么?
【发布时间】:2013-07-11 01:51:06
【问题描述】:
System.out.println("\1");

我认为它没有编译是因为无法识别的转义序列。

"\1" 究竟代表什么?

【问题讨论】:

    标签: java regex unicode-escapes


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      相关资源
      最近更新 更多