【问题标题】:String illegal escape charcter字符串非法转义字符
【发布时间】:2012-09-14 01:50:05
【问题描述】:

在回答其中一个问题时,我遇到了这个有趣的情况。

如果我有如下字符串,Netbeans 不会抱怨它是illegal start of expression

String temp="\19825655.";

一旦我删除“1”,它就会抱怨它是illegal start of expression

String temp="\9825655.";

无法找出这种行为的原因。任何意见将不胜感激。

观察:看来\9\8有特殊含义。仅适用于 \9\8 我收到 illegal start of expression。它没有抱怨的所有其他组合。

【问题讨论】:

  • 您正在为后面的数字使用转义序列。 \98 无效。

标签: java octal


【解决方案1】:

\1 是八进制转义码。在Escape Sequences for Character and String Literals 的 JLS 中查看。

【讨论】:

  • +1 因此将其视为\19825655.\12345 将被视为\12345
【解决方案2】:

是的,这意味着\1 的组合是一个转义序列。但是,据我所知,这不是一个已知的转义序列。

编辑:好的,这是一个 八进制 数字,很有趣 - \x Escape in Java?

【讨论】:

  • 嗯,我明白那部分,但为什么 \8 和 \9 不是?
  • @Nambari - Java 规范指定它们不应该是。请参阅另一个答案中的链接。
  • 是八进制转义,八进制只允许数字0-7,所以\8不是合法的八进制值。
  • 八进制是一个以8为底的计数系统(0-7),类似于二进制是一个以2为底的系统,因此只有0-1是有效数字。
猜你喜欢
  • 2011-09-09
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2011-07-30
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多