我正在解决一个问题并遇到了这个问题。会发生什么:
当我们使用它时:
BigInteger.valueOf(10000)
它的值为10000
但是
当我们使用此BigInteger.valueOf(0010000)
时,它会给出4096
这两者之间有什么区别?
答案 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
所以你在技术上传递了两个不同的数字
和