2012-04-10 50 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)