Post Increment Operator in Java
Question:
In the code snippet below, why does the post increment operator j assign 0 to j?
public class Test { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 } }
According to the author of the book "Java Puzzlers," the statement j = j is similar to the following sequence:
temp = j; j = j + 1; j = temp;
However, the statement a = b assigns b the value 1, which contradicts the expected behavior of the post increment operator.
Answer:
The mistake in the argument lies in applying the rule of increment then assign to a = b but not to j = j . The correct sequence of operations for a = b is:
temp = b; b = b + 1; // increment a = temp; // assign
Applying the same rule to j = j , we get:
j = j; j = j + 1; // increment
As the initial value of j was 0, the post increment operator returns 0 because the value of j before the increment is used in the expression.
Therefore, the final value of j is 0 because the assignment statement evaluates to j = 0.
The above is the detailed content of Why does j = j assign 0 to j in Java?. For more information, please follow other related articles on the PHP Chinese website!