为什么09“太大”的整数?
他们认为这是:
可能重复:
整数与前导零
但是,如果你检查整数与前导零,那么你会发现问题是否问到在jdk7的推出之前,因此它有较低的研究努力。 但是在jdk7中整数有一些变化和增加。 以下是覆盖jdk7的最新答案。
我有一个代码:
class Test{ public static void main(String[] args){ int x=09; System.out.println(x); } }
在编译时会给出一个错误:整数太大:09
为什么这样做?
再一次,如果我将代码更改为:
class Test{ public static void main(String[] args){ int x=012; System.out.println(x); } }
现在输出是10
为什么它给输出10而不是12?
以0
开头的数字被认为是八进制的 – 而9不是八进制数字(但是(通常)是0-7)。
hex文字以0x
,例如0xA
。
直到Java 6,二进制没有文字符号,你将不得不使用类似的东西
int a = Integer.parseInt("1011011", 2);
第二个参数指定了所需的基数。
Java 7现在有二进制文字 。
在Java SE 7中,整数types(byte,short,int和long)也可以用二进制数表示。 要指定二进制文字,请将前缀
0b
或0B
添加到号码中。
以“0”开始的整数文字被视为八进制。 允许的数字是0到7。
以数字0开始的整数是八进制 (基数8)数字。 最大的八进制数是7; 07之后到了010(相当于小数点8!)
012(八进制十二)是010(八进制十,即十进制8)加2或十进制。
09是一个八进制数字文字,但无效的。
hex数字以0x开头,如0xFFFF。
Java中曾经没有二进制文字。 Java 7支持它们,从0b开始,如0b00100001。
以0开头的数字是八进制数字。 http://en.wikipedia.org/wiki/Octal