Puzzle (Inclement Increment)
Consider the following example.
package demo;
public class App {
public static void main( String[] args ) {
int j = 0;
for ( int i = 0; i < 100; i++ )
j = j++;
System.out.println( j );
}
}
What will be the value of j?
0
This example was taken from PUZZLE 25: INCLEMENT INCREMENT in Java™ Puzzlers: Traps, Pitfalls, and Corner Cases.
“Presumably, the author of the statement meant for it to add 1 to the value of j, which is what the expression j++ does. Unfortunately, the author inadvertently assigned the value of this expression back to j. When placed after a variable, the ++ operator functions as the postfix increment operator (JLS 15.14.2): The value of the expression j++ is the original value of j before it was incremented. Therefore, the preceding assignment first saves the value of j, then sets j to its value plus 1, and, finally, resets j back to its original value.”