Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java: Prefix/postfix of increment/decrement operators?

From the program below or here, why does the last call to System.out.println(i) print the value 7?

class PrePostDemo {      public static void main(String[] args){           int i = 3;           i++;           System.out.println(i);    // "4"           ++i;                        System.out.println(i);    // "5"           System.out.println(++i);  // "6"           System.out.println(i++);  // "6"           System.out.println(i);    // "7"      } } 
like image 249
O_O Avatar asked Mar 24 '11 01:03

O_O


1 Answers

i = 5; System.out.println(++i); //6 

This prints out "6" because it takes i, adds one to it, and returns the value: 5+1=6. This is prefixing, adding to the number before using it in the operation.

i = 6; System.out.println(i++); //6 (i = 7, prints 6) 

This prints out "6" because it takes i, stores a copy, adds 1 to the variable, and then returns the copy. So you get the value that i was, but also increment it at the same time. Therefore you print out the old value but it gets incremented. The beauty of a postfix increment.

Then when you print out i, it shows the real value of i because it had been incremented: 7.

like image 134
Spidy Avatar answered Sep 29 '22 17:09

Spidy