这两者有什么区别:BigInteger.valueOf(10000)和BigInteger.valueOf(0010000)?

mur*_*dev 6 java numeric biginteger

我正在处理一个问题并遇到了这个问题.会发生什么:

当我们使用它时: BigInteger.valueOf(10000)它给出了价值10000

当我们使用BigInteger.valueOf(0010000)它时,它给出了价值4096

这两者有什么区别?

Jon*_*eet 12

0010000是八进制文字.这与之无关BigInteger- 它只是Java整数文字(JLS 3.10.1):

System.out.println(10000);   // 10000
System.out.println(0010000); // 4096
Run Code Online (Sandbox Code Playgroud)

来自JLS:

十进制数字是单个ASCII数字0,表示整数零,或者由1到9的ASCII数字组成,可选地后跟一个或多个从0到9的ASCII数字,其中散布着下划线,表示正整数.

...

八进制数字由ASCII数字0后跟一个或多个散布有下划线的ASCII数字0到7组成,并且可以表示正整数,零整数或负整数.