2012-07-13 53 views
4

在Java中,我注意到,当我写INT I = 99但是工作INT I = 099不工作

int i = 99; 

它工作正常。然而,当我说

int i = 099; 

我得到一个异常:

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

在我的IDE,我看到一个红点说integer number too large: 099

为什么这不是编译?是不是099相当于99?

+2

'099'被假定为Java中的八进制数。 [详情](http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1)。 – Lion 2012-07-13 19:37:26

回答

14

任何领先的0将使Java将该数字解释为八进制数。所以,010实际上是8

System.out.println(010); 

OUTPUT:

8 

如你所知,89不在一个八进制数允许的。

+0

它继承自C – 2012-09-22 14:47:20

+0

@ThorbjørnRavnAndersen是的,Java的大部分语法都是从C继承而来:) – 2012-09-22 14:50:56

6

这是一个八进制数。八进制数的前缀为0,以便将它们与其他值(如十进制和十六进制)区分开来。

相关问题