Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 365
murtaza.webdev Avatar asked Oct 24 '16 06:10

murtaza.webdev


2 Answers

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.

like image 62
Jon Skeet Avatar answered Sep 28 '22 02:09

Jon Skeet


The second one is integer in octal system, the first in decimal, that is the reason of the difference

like image 22
holmicz Avatar answered Sep 28 '22 02:09

holmicz