This week's book giveaway is in the JDBC forum. We're giving away four copies of Make it so: Java DB Connections & Transactions and have Marcho Behler on-line! See this thread for details.

When you declare an integer, and the leading digit is a '0', the compiler considers the value to be an Octal representation of the number. So, in your case, it is reading in 12 base 8. When you print it out, it converts it to decimal. so you get 1*8 + 2*1 or 10.

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors

you can tell octal numbers because they have the preceding 0 so in your case: int i = 012; this is how it is represented: the 0 tells you its octal, the 1 tells you how many 8's there are, in this case only one, the 2 tells you how many 1's there are, in this case 2, so (8*1) + (1*2)= 10 hope this helps. Davy