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

时间:2016-10-24 06:47:12

标签: java numeric biginteger

我正在解决一个问题并遇到了这个问题。会发生什么:

当我们使用它时: BigInteger.valueOf(10000)它的值为10000

但是

当我们使用此BigInteger.valueOf(0010000)时,它会给出4096

的值

这两者之间有什么区别?

3 个答案:

答案 0 :(得分:12)

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

System.out.println(10000);   // 10000
System.out.println(0010000); // 4096

来自JLS:

  

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

     

...

     

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

答案 1 :(得分:2)

第二个是八进制系统中的整数,第一个是十进制,这是差异的原因

答案 2 :(得分:2)

这是将十进制文字作为参数

BigInteger.valueOf(10000) 

这是将八进制文字作为参数

BigInteger.valueOf(0010000) because begins with 0

所以你在技术上传递了两个不同的数字

  1. 10000
    1. 4096