Post-Increment Operator in Java
The post-increment operator ( ) is a unary operator that increments a variable's value by 1. However, its semantics can be somewhat confusing.
Consider the following code segment:
<code class="java">int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0</code>
Here, the value of j remains 0 after the loop. This behavior is counterintuitive at first glance, but it can be understood by examining the steps taken by the compiler:
Essentially, the post-increment operator stores the original value of the variable before incrementing it. This is similar to the following code block:
<code class="java">int temp = j; j++; j = temp;</code>
In contrast, consider the following code segment:
<code class="java">int a = 0, b = 0; a = b++; System.out.println(a); // prints 0 System.out.println(b); // prints 1</code>
Here, a is assigned the original value of b (0), and then b is incremented. This behavior adheres to the rule that assignments with post-fix increment operator evaluate the right-hand side first, increment the variable, and then assign the original value.
Applying the same logic to the earlier example, we can see why j = j results in 0:
Thus, the post-increment operator can lead to unexpected results if not properly understood. It is important to remember that it increments the variable after evaluating the expression and assigns the original value to the variable.
The above is the detailed content of Why does `j = j ;` in Java leave `j` unchanged?. For more information, please follow other related articles on the PHP Chinese website!