int i=99是有效的,但int i=099无效。

4
在Java中,我注意到当我编写

标签时
int i = 99;

它的工作状态还不错。但是当我说:

int i = 099;

我遇到了一个异常:

java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>

在我的集成开发环境中,我看到一个红点,上面写着“整数过大:099”。

为什么这个代码无法编译?难道099不等同于99吗?


2
在Java中,“099”被假定为八进制数。更多细节 - Lion
2个回答

14

任何前导的 0 都会让Java将这个数解释为八进制数。所以,010 实际上是 8

System.out.println(010);

输出:

8
而且正如你所知道的,89在八进制数中是不允许出现的。

@ThorbjørnRavnAndersen 是的,Java 的大部分语法都是继承自 C :) - Eng.Fouad

6

这是一个八进制数。八进制数以0为前缀,以区分于其他值,如十进制和十六进制。


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