I was working with one problem and came across this. What happen is:
when we use this:
BigInteger.valueOf(10000)
it gives value of 10000
But
when we use this BigInteger.valueOf(0010000)
it gives value of 4096
Whats the difference between the two?
0010000 is an octal literal. This has nothing to do with BigInteger
- it's just Java integer literals (JLS 3.10.1):
System.out.println(10000); // 10000
System.out.println(0010000); // 4096
From the JLS:
A decimal numeral is either the single ASCII digit 0, representing the integer zero, or consists of an ASCII digit from 1 to 9 optionally followed by one or more ASCII digits from 0 to 9 interspersed with underscores, representing a positive integer.
...
An octal numeral consists of an ASCII digit 0 followed by one or more of the ASCII digits 0 through 7 interspersed with underscores, and can represent a positive, zero, or negative integer.
See more on this question at Stackoverflow