2012-07-13 91 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,以便將它們與其他值(如十進制和十六進制)區分開來。

相關問題