这两个:BigInteger.valueOf(10000)和BigInteger.valueOf(0010000)有什么



我正在处理一个问题,然后遇到了这个。结果是:

,当我们使用这个:BigInteger.valueOf(10000)给出10000

的值

,

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

两者的区别是什么?

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

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

来自JLS:

十进制数字可以是单个ASCII数字0,表示整数0,或者由1到9的ASCII数字组成,后面可选地跟一个或多个ASCII数字0到9,中间夹杂下划线,表示正整数。

八进制数由一个ASCII数字0和一个或多个ASCII数字0到7组成,并以下划线分隔,可以表示正整数、零整数或负整数。

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

将十进制文字作为参数

BigInteger.valueOf(10000) 

,它将八进制文本作为参数

BigInteger.valueOf(0010000)因为以0开头

所以你实际上传递了两个不同的数字

  1. 10000

  • 4096
  • 最新更新