2012-04-10 49 views
1
public class Example { 

    public static void main(String args[]) { 
     int a = 0153; 
     int b=a; 
     System.out.println(""+b); 
    } 
} 

有人可以解釋爲什麼它打印107而不是153整數分配在java

+9

因爲'0153'被認爲是一個八進制數。 – Lion 2012-04-10 19:44:15

+0

@Lion是對的。請參閱Java規範的「整數文字」部分:http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1 – NullUserException 2012-04-10 19:45:32

回答

2

107八路是0153

在Java可以簡單地通過添加一個前導零這樣創建八進制文字中:int a = 0755;小心!指定八進制文字很常見

0

因爲開始於0的數字在Java中被視爲八進制值。 0153八進制爲十進制的107

0

您寫爲八進制並打印默認爲十進制。

  Input       Prints (decimal) 

Decimal 153        153 
     ^
     No leading zero (digits 0-9) 

Octal 0153        107 
     ^
     leading zero (digits 0-7) 

Hex  0x153       339 
     ^^ 
     leading 0x (digits 0-F)