public class Example {
public static void main(String args[]) {
int a = 0153;
int b=a;
System.out.println(""+b);
}
}
有人可以解释为什么它打印107
而不是153
?整数分配在java
public class Example {
public static void main(String args[]) {
int a = 0153;
int b=a;
System.out.println(""+b);
}
}
有人可以解释为什么它打印107
而不是153
?整数分配在java
107八路是0153
在Java可以简单地通过添加一个前导零这样创建八进制文字中:int a = 0755;小心!指定八进制文字很常见
因为开始于0
的数字在Java中被视为八进制值。 0153
八进制为十进制的107
。
您写为八进制并打印默认为十进制。
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)
因为'0153'被认为是一个八进制数。 – Lion 2012-04-10 19:44:15
@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