字符串非法转义字符

4

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

如果我有以下字符串,Netbeans不会抱怨它是一个非法的表达式开始

String temp="\19825655.";

一旦我删除 '1',它就会抱怨这是一个非法的表达式开头
String temp="\9825655.";

我无法找到这种行为的原因。欢迎提供任何意见。

观察:看起来\9\8具有特殊意义。只有对于\9\8,我才会得到illegal start of expression。所有其他组合都没有问题。


1
您正在使用转义序列来表示接下来的数字。\98 是无效的。 - Peter Lawrey
2个回答

13

+1 被视为 \19825655.,而 \12345 则被视为 \12345 - Peter Lawrey

1

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

编辑:好吧,这是一个八进制数字,有趣 - \x 在Java中的转义?


我理解了那部分,但为什么\8和\9不是呢? - kosa
1
@Nambari - Java 规范指定它们不应该被使用。请参见其他答案中的链接。 - Don Roby
1
这是一个八进制转义字符,而八进制只允许使用0-7的数字,所以\8不是合法的八进制值。 - Brian
1
八进制是一种基于8的计数系统(0-7),类似于二进制是基于2的系统,因此只有0-1是有效数字。 - DJ Quimby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接