Whats difference between this two: BigInteger.valueOf(10000) and BigInteger.valueOf(0010000)?

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?

Jon Skeet
people
quotationmark

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.

people

See more on this question at Stackoverflow