689Shinigami
689Shinigami

Reputation: 31

How does a leading zero change a numeric literal in Java?

My friends and I have puzzled over this statement in Java after seeing it and the answer. How does this work?

System.out.printf("%d", 077);

equals 63?

Upvotes: 3

Views: 916

Answers (3)

Reimeus
Reimeus

Reputation: 159874

077 is an octal number which equals 7 x 81 + 7 x 80 which is 63 decimal. To display the octal value you could do

System.out.printf("%o", 077);

Upvotes: 7

Gabriel Espinel
Gabriel Espinel

Reputation: 370

When you define an literal integer number with a 0 prefix, the compiler will treat it as an integer base 8. (Octal).

Check at this post http://rodrigosasaki.com/2013/06/10/number-literals-in-java/

So, 77 value in Octal base is actually 63 in Decimal base.

Upvotes: 2

GoF
GoF

Reputation: 9

077 = 7 * 8^0 + 7 * 8^1 = 63; 0123 = 3 * 8^0 + 2 * 8^1 + 1 * 8^2 = 3 + 16 + 64 = 83; First 0 means octal value.

0x77 - is hex val.

Upvotes: 0

Related Questions